You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
project_telephony/lib/ui/exclude/exclude_contacts_page.dart

103 lines
3.0 KiB

2 years ago
import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/cupertino.dart';
2 years ago
import 'package:flutter/material.dart';
import 'package:flutter_contacts/flutter_contacts.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:get/get_core/src/get_main.dart';
import 'package:get/get_utils/get_utils.dart';
import 'package:project_telephony/ui/widget/scaffold_theme_widget.dart';
class ExcludeContactsPage extends StatefulWidget {
const ExcludeContactsPage({Key? key}) : super(key: key);
@override
_ExcludeContactsPageState createState() => _ExcludeContactsPageState();
}
class _ExcludeContactsPageState extends State<ExcludeContactsPage> {
2 years ago
late List<Contact> contacts;
List<String> numbers = [];
List<bool> status = [];
var flag = true;
@override
void initState() {
super.initState();
_incrementCounter();
}
Future _incrementCounter() async {
contacts = await FlutterContacts.getContacts();
for (var element in contacts) {
final full = await FlutterContacts.getContact(element.id);
numbers.add(full!.phones.first.number);
status.add(false);
}
setState(() {});
}
@override
Widget build(BuildContext context) {
2 years ago
var profileBuilder = FutureBuilder(
future: _incrementCounter(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting && flag) {
flag = false;
return Container();
} else {
return ListView.builder(
itemCount: contacts.length,
itemBuilder: (context, i) => ListTile(
title: Text(
contacts[i].displayName,
style: TextStyle(
fontSize: 32.sp,
fontWeight: FontWeight.w600,
),
),
subtitle: Text(
numbers[i],
style: TextStyle(
fontSize: 28.sp,
fontWeight: FontWeight.w300,
),
),
trailing: Checkbox(
value: status[i],
// 改变后的事件
onChanged: (value) {
setState(() {
status[i] = !status[i];
});
},
// 选中后的颜色
activeColor: Colors.blue,
// 选中后对号的颜色
checkColor: Colors.white,
),
).paddingOnly(left: 20.w),
);
}
},
);
return ScaffoldThemeWidget(
title: "从通讯录添加",
bottom: "添加",
2 years ago
onTap: () {
if(status.contains(true)){
// BotToast.showText(text: "有");
Get.back();
}else{
BotToast.showText(text: "还未选中手机号");
}
},
isOpacity: status.contains(true),
isBorder: true,
child: profileBuilder,
);
}
}