|
|
|
|
// import 'package:flutter/cupertino.dart';
|
|
|
|
|
// import 'package:flutter/material.dart';
|
|
|
|
|
// import 'package:flutter_easyrefresh/easy_refresh.dart';
|
|
|
|
|
// import 'package:project_telephony/model/hive/phone_model.dart';
|
|
|
|
|
// import 'package:project_telephony/utils/headers.dart';
|
|
|
|
|
// import 'package:project_telephony/utils/hive_store.dart';
|
|
|
|
|
//
|
|
|
|
|
// import '../../base/base_style.dart';
|
|
|
|
|
// import '../widget/plone_back_button.dart';
|
|
|
|
|
// import '../widget/plone_bottom.dart';
|
|
|
|
|
// import 'call_list_page.dart';
|
|
|
|
|
//
|
|
|
|
|
// typedef NumList = Function(List<String> content);
|
|
|
|
|
//
|
|
|
|
|
// class AddressBook extends StatefulWidget {
|
|
|
|
|
// final NumList number;
|
|
|
|
|
//
|
|
|
|
|
// const AddressBook({Key? key, required this.number}) : super(key: key);
|
|
|
|
|
//
|
|
|
|
|
// @override
|
|
|
|
|
// _AddressBookState createState() => _AddressBookState();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// class _AddressBookState extends State<AddressBook> {
|
|
|
|
|
// final EasyRefreshController _easyRefreshController = EasyRefreshController();
|
|
|
|
|
// String phoneName = "";
|
|
|
|
|
// List<PhoneModel> massList = [];
|
|
|
|
|
// List<PhoneNum> phoneList = [];
|
|
|
|
|
// List<String> NumList = [];
|
|
|
|
|
// bool state=false;
|
|
|
|
|
//
|
|
|
|
|
// @override
|
|
|
|
|
// void initState() {
|
|
|
|
|
// // print("这是我的第二个类型${massList.runtimeType}");
|
|
|
|
|
// // print(HiveStore.dataBox?.get("ml"));
|
|
|
|
|
// massList = HiveStore.dataBox?.get("ml").cast<PhoneModel>();
|
|
|
|
|
// // UserTool.phoneNumProvider.init();
|
|
|
|
|
// // massList=HiveStore.dataBox?.get("ml").cast<PhoneModel>();
|
|
|
|
|
// // List<dynamic> list<PhoneModel>
|
|
|
|
|
// // massList= HiveStore.dataBox?.get("ml");
|
|
|
|
|
// super.initState();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @override
|
|
|
|
|
// void dispose() {
|
|
|
|
|
// _easyRefreshController.dispose();
|
|
|
|
|
// super.dispose();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// @override
|
|
|
|
|
// Widget build(BuildContext context) {
|
|
|
|
|
// return Scaffold(
|
|
|
|
|
// resizeToAvoidBottomInset: false,
|
|
|
|
|
// appBar: AppBar(
|
|
|
|
|
// elevation: 0,
|
|
|
|
|
// centerTitle: true,
|
|
|
|
|
// title: Text(
|
|
|
|
|
// '通讯录',
|
|
|
|
|
// style: TextStyle(
|
|
|
|
|
// fontSize: BaseStyle.fontSize34,
|
|
|
|
|
// color: BaseStyle.color333333,
|
|
|
|
|
// fontWeight: FontWeight.bold),
|
|
|
|
|
// ),
|
|
|
|
|
// // titleSpacing: 185.w,
|
|
|
|
|
// actions: [
|
|
|
|
|
// GestureDetector(
|
|
|
|
|
// onTap: () {
|
|
|
|
|
// showDialog(
|
|
|
|
|
// context: context,
|
|
|
|
|
// builder: (context) {
|
|
|
|
|
// return CupertinoAlertDialog(
|
|
|
|
|
// title: Text(
|
|
|
|
|
// "添加分组",
|
|
|
|
|
// style: TextStyle(
|
|
|
|
|
// color: BaseStyle.color333333,
|
|
|
|
|
// fontSize: 34.sp),
|
|
|
|
|
// ),
|
|
|
|
|
// content: Column(
|
|
|
|
|
// children: [
|
|
|
|
|
// Column(
|
|
|
|
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
// children: [
|
|
|
|
|
// CupertinoTextField(
|
|
|
|
|
// padding: EdgeInsets.symmetric(
|
|
|
|
|
// horizontal: 24.w, vertical: 20.w),
|
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
|
// border:
|
|
|
|
|
// Border.all(color: Colors.white),
|
|
|
|
|
// // borderRadius: BorderRadius.all(
|
|
|
|
|
// // Radius.circular(4.w)
|
|
|
|
|
// // ),
|
|
|
|
|
// color: const Color(0xFFF9F9F9)),
|
|
|
|
|
// placeholderStyle: TextStyle(
|
|
|
|
|
// fontSize: 28.sp,
|
|
|
|
|
// color: BaseStyle.color999999),
|
|
|
|
|
// placeholder: "请输入分组名称(10个字以内)",
|
|
|
|
|
// onChanged: (value) {
|
|
|
|
|
// phoneName = value;
|
|
|
|
|
// setState(() {});
|
|
|
|
|
// },
|
|
|
|
|
// ),
|
|
|
|
|
//
|
|
|
|
|
// 82.hb,
|
|
|
|
|
// // _getUpdate("爸爸", "123123123"),
|
|
|
|
|
// PloneBottom(
|
|
|
|
|
// blM: false,
|
|
|
|
|
// border: true,
|
|
|
|
|
// color1: const Color(0xFF1890FF),
|
|
|
|
|
// color2: const Color(0xFF74BCFF),
|
|
|
|
|
// onTap: () async {
|
|
|
|
|
// DateTime now = DateTime.now();
|
|
|
|
|
// String nowTime =
|
|
|
|
|
// "${now.year}-${now.month}-${now
|
|
|
|
|
// .day} ${now.hour}:${now
|
|
|
|
|
// .minute}:${now.millisecond}";
|
|
|
|
|
// massList.add(PhoneModel(
|
|
|
|
|
// time: nowTime,
|
|
|
|
|
// phoneList: [],
|
|
|
|
|
// state: false,
|
|
|
|
|
// title: phoneName));
|
|
|
|
|
// await HiveStore.dataBox
|
|
|
|
|
// ?.put("ml", massList);
|
|
|
|
|
// // massList.add(MassListModel(
|
|
|
|
|
// // state: false,
|
|
|
|
|
// // list: [],
|
|
|
|
|
// // title: phoneName,
|
|
|
|
|
// // time: nowTime));
|
|
|
|
|
// // // await
|
|
|
|
|
// // Navigator.pop(context);
|
|
|
|
|
// Get.back();
|
|
|
|
|
// _easyRefreshController.callRefresh();
|
|
|
|
|
// },
|
|
|
|
|
// text: "保存",
|
|
|
|
|
// )
|
|
|
|
|
// ],
|
|
|
|
|
// ),
|
|
|
|
|
// ],
|
|
|
|
|
// ),
|
|
|
|
|
// );
|
|
|
|
|
// });
|
|
|
|
|
// },
|
|
|
|
|
// child: Padding(
|
|
|
|
|
// padding: EdgeInsets.only(top: 40.w, right: 32.w),
|
|
|
|
|
// child: SizedBox(
|
|
|
|
|
// height: 28.w,
|
|
|
|
|
// width: 120.w,
|
|
|
|
|
// child: Text(
|
|
|
|
|
// "添加分组",
|
|
|
|
|
// style: TextStyle(
|
|
|
|
|
// color: BaseStyle.color333333, fontSize: 28.sp),
|
|
|
|
|
// ),
|
|
|
|
|
// )))
|
|
|
|
|
// ],
|
|
|
|
|
// leading: const CloudBackButton(isSpecial: true),
|
|
|
|
|
// backgroundColor: kForeGroundColor),
|
|
|
|
|
// backgroundColor: Colors.white,
|
|
|
|
|
// body: EasyRefresh(
|
|
|
|
|
// firstRefresh: true,
|
|
|
|
|
// header: MaterialHeader(),
|
|
|
|
|
// controller: _easyRefreshController,
|
|
|
|
|
// onRefresh: () async {
|
|
|
|
|
// // UserTool.phoneNumProvider.init();
|
|
|
|
|
// // massList=HiveStore.dataBox?.get("ml");
|
|
|
|
|
// // massList=HiveStore.dataBox?.get("ml").cast<PhoneModel>();
|
|
|
|
|
// // massList=HiveStore.dataBox?.get("ml").cast<List<PhoneModel>>();
|
|
|
|
|
// setState(() {});
|
|
|
|
|
// },
|
|
|
|
|
// child: ListView.builder(
|
|
|
|
|
// itemBuilder: (context, index) {
|
|
|
|
|
// return _getBox(
|
|
|
|
|
// massList[index], index, massList[index].phoneList!.length);
|
|
|
|
|
// },
|
|
|
|
|
// itemCount: massList.length,
|
|
|
|
|
// ),
|
|
|
|
|
// ),
|
|
|
|
|
// bottomNavigationBar: Padding(
|
|
|
|
|
// padding: EdgeInsets.only(bottom: 24.w),
|
|
|
|
|
// child: PloneBottom(
|
|
|
|
|
// onTap: () {
|
|
|
|
|
// widget.number(NumList);
|
|
|
|
|
// Get.back();
|
|
|
|
|
// },
|
|
|
|
|
// // border: state,
|
|
|
|
|
// opacity: 1,
|
|
|
|
|
// text: "确定",
|
|
|
|
|
// ),
|
|
|
|
|
// ));
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// _getBox(PhoneModel item, int index, int num) {
|
|
|
|
|
// return CheckboxListTile(
|
|
|
|
|
// onChanged: (bool? value) {
|
|
|
|
|
// setState(() {
|
|
|
|
|
// item.state = value!;
|
|
|
|
|
// state=value;
|
|
|
|
|
// if (item.state!) {
|
|
|
|
|
// item.phoneList?.forEach((element) {
|
|
|
|
|
// NumList.add(element.phone ?? "");
|
|
|
|
|
// });
|
|
|
|
|
// // item.phoneList!.map((e) => NumList.add(e.phone ??""));
|
|
|
|
|
// } else {
|
|
|
|
|
// item.phoneList?.forEach((element) {
|
|
|
|
|
// NumList.remove(element.phone ?? "");
|
|
|
|
|
// });
|
|
|
|
|
// // item.phoneList!.map((e) => NumList.remove(e.phone ??""));
|
|
|
|
|
// // phoneNum3.remove({"phone":num,"remark":name});
|
|
|
|
|
// // phoneNum3.remove(ExcludePnModel(phone: num, remark: name)) ;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// },
|
|
|
|
|
// value: item.state,
|
|
|
|
|
// title: GestureDetector(
|
|
|
|
|
// onTap: () {
|
|
|
|
|
// Navigator.of(context)
|
|
|
|
|
// .push(MaterialPageRoute(builder: (_) =>
|
|
|
|
|
// CallListPage(
|
|
|
|
|
// phoneNum: item.phoneList ?? [],
|
|
|
|
|
// title: item.title ?? "",
|
|
|
|
|
// index: index,
|
|
|
|
|
// ))).then((value) => _easyRefreshController.callRefresh());
|
|
|
|
|
// print(index);
|
|
|
|
|
// },
|
|
|
|
|
// child: Text(
|
|
|
|
|
// "${item.title}($num)",
|
|
|
|
|
// style: TextStyle(fontSize: 32.w, fontWeight: FontWeight.bold),
|
|
|
|
|
// ),
|
|
|
|
|
// ),
|
|
|
|
|
// subtitle: Row(
|
|
|
|
|
// children: [
|
|
|
|
|
// Text(
|
|
|
|
|
// item.time ?? "",
|
|
|
|
|
// style: TextStyle(fontSize: 28.sp, color: BaseStyle.color999999),
|
|
|
|
|
// ),
|
|
|
|
|
// // 30.wb,
|
|
|
|
|
// // Text(
|
|
|
|
|
// // item.name == null ? "" : item.name!,
|
|
|
|
|
// // style: TextStyle(fontSize: 28.sp, color: BaseStyle.color999999),
|
|
|
|
|
// // )
|
|
|
|
|
// ],
|
|
|
|
|
// ),
|
|
|
|
|
// );
|
|
|
|
|
// }
|
|
|
|
|
// }
|