|
|
|
import 'package:flutter/material.dart';
|
|
|
|
// import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
import 'package:contacts_service/contacts_service.dart';
|
|
|
|
import 'package:flutter_screenutil/screenutil.dart';
|
|
|
|
// import 'package:contacts_service/contacts_service.dart';
|
|
|
|
// import 'package:flutter_screenutil/screenutil.dart';
|
|
|
|
|
|
|
|
import 'package:one_key/pages/my/contant_left_page.dart';
|
|
|
|
import 'package:one_key/pages/my/contant_right_page.dart';
|
|
|
|
import 'package:one_key/provider/contant_show_model.dart';
|
|
|
|
import 'package:one_key/res/colors.dart';
|
|
|
|
import 'package:one_key/utils/event_bus.dart';
|
|
|
|
import 'package:one_key/utils/utils.dart';
|
|
|
|
// import 'package:one_key/pages/my/contant_left_page.dart';
|
|
|
|
// import 'package:one_key/pages/my/contant_right_page.dart';
|
|
|
|
// import 'package:one_key/provider/contant_show_model.dart';
|
|
|
|
// import 'package:one_key/res/colors.dart';
|
|
|
|
// import 'package:one_key/utils/event_bus.dart';
|
|
|
|
// import 'package:one_key/utils/utils.dart';
|
|
|
|
|
|
|
|
import 'package:one_key/widgets/custom_tab_indicator.dart';
|
|
|
|
import 'package:one_key/widgets/system_app_bar.dart';
|
|
|
|
// import 'package:one_key/widgets/custom_tab_indicator.dart';
|
|
|
|
// import 'package:one_key/widgets/system_app_bar.dart';
|
|
|
|
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
// import 'package:provider/provider.dart';
|
|
|
|
|
|
|
|
class ContactListPage extends StatefulWidget {
|
|
|
|
@override
|
|
|
|
_ContactListPageState createState() => _ContactListPageState();
|
|
|
|
}
|
|
|
|
// class ContactListPage extends StatefulWidget {
|
|
|
|
// @override
|
|
|
|
// _ContactListPageState createState() => _ContactListPageState();
|
|
|
|
// }
|
|
|
|
|
|
|
|
class _ContactListPageState extends State<ContactListPage>
|
|
|
|
with TickerProviderStateMixin {
|
|
|
|
List<Contact> _contacts;
|
|
|
|
List _tabBarTitle;
|
|
|
|
TabController tabController;
|
|
|
|
// class _ContactListPageState extends State<ContactListPage>
|
|
|
|
// with TickerProviderStateMixin {
|
|
|
|
// List<Contact> _contacts;
|
|
|
|
// List _tabBarTitle;
|
|
|
|
// TabController tabController;
|
|
|
|
|
|
|
|
ContantShowModel contantShowModel;
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
_tabBarTitle = ['预订联系人', '手机联系人'];
|
|
|
|
super.initState();
|
|
|
|
tabController = TabController(length: 2, vsync: this);
|
|
|
|
}
|
|
|
|
// ContantShowModel contantShowModel;
|
|
|
|
// @override
|
|
|
|
// void initState() {
|
|
|
|
// _tabBarTitle = ['预订联系人', '手机联系人'];
|
|
|
|
// super.initState();
|
|
|
|
// tabController = TabController(length: 2, vsync: this);
|
|
|
|
// }
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
contantShowModel = Provider.of<ContantShowModel>(context, listen: true);
|
|
|
|
return Material(
|
|
|
|
child: InkWell(
|
|
|
|
onTap: () {
|
|
|
|
// FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
|
|
|
|
},
|
|
|
|
child: Scaffold(
|
|
|
|
resizeToAvoidBottomInset: false,
|
|
|
|
backgroundColor: MyColours.color_ffffff,
|
|
|
|
appBar: SystemAppBar(
|
|
|
|
'联系人',
|
|
|
|
onTap: () {
|
|
|
|
EventBus().emit('changeStatusColor');
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
},
|
|
|
|
),
|
|
|
|
body: WillPopScope(
|
|
|
|
child: SafeArea(
|
|
|
|
child: Column(
|
|
|
|
children: <Widget>[
|
|
|
|
Container(
|
|
|
|
// color: Colors.red,
|
|
|
|
padding: EdgeInsets.symmetric(
|
|
|
|
horizontal: ScreenUtil().setWidth(40),
|
|
|
|
vertical: ScreenUtil().setWidth(10)),
|
|
|
|
height: ScreenUtil().setWidth(45 * 2),
|
|
|
|
// alignment: Alignment.center,
|
|
|
|
child: Stack(
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
alignment: Alignment.center,
|
|
|
|
padding: EdgeInsets.symmetric(
|
|
|
|
horizontal: ScreenUtil().setWidth(20 * 2),
|
|
|
|
vertical: ScreenUtil().setWidth(14)),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: MyColours.color_F0F0F0,
|
|
|
|
borderRadius: BorderRadius.circular(
|
|
|
|
ScreenUtil().setWidth(24 * 2))),
|
|
|
|
child: TextField(
|
|
|
|
maxLines: 1,
|
|
|
|
controller: contantShowModel.controller,
|
|
|
|
// focusNode: _focusNode,
|
|
|
|
// autofocus: true,
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_333333,
|
|
|
|
fontSize: ScreenUtil().setSp(30)),
|
|
|
|
// textAlignVertical: TextAlignVertical.center,
|
|
|
|
decoration: InputDecoration(
|
|
|
|
contentPadding: EdgeInsets.only(
|
|
|
|
right: ScreenUtil().setWidth(40 * 2)),
|
|
|
|
hintText: "搜索联系人",
|
|
|
|
hintStyle: TextStyle(
|
|
|
|
color: MyColours.color_999999,
|
|
|
|
fontSize: ScreenUtil().setSp(30),
|
|
|
|
),
|
|
|
|
isCollapsed:
|
|
|
|
true, //重点,相当于高度包裹的意思,必须设置为true,不然有默认奇妙的最小高度
|
|
|
|
border: OutlineInputBorder(
|
|
|
|
borderSide: BorderSide.none),
|
|
|
|
// 左边图标设置
|
|
|
|
icon: Image.asset(
|
|
|
|
Utils.getImgPath('search'),
|
|
|
|
width: ScreenUtil().setWidth(30),
|
|
|
|
),
|
|
|
|
//右边图标设置
|
|
|
|
// suffixIcon:
|
|
|
|
),
|
|
|
|
keyboardType: TextInputType.text,
|
|
|
|
textInputAction: TextInputAction.done,
|
|
|
|
// @override
|
|
|
|
// Widget build(BuildContext context) {
|
|
|
|
// contantShowModel = Provider.of<ContantShowModel>(context, listen: true);
|
|
|
|
// return Material(
|
|
|
|
// child: InkWell(
|
|
|
|
// onTap: () {
|
|
|
|
// // FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
|
|
|
|
// },
|
|
|
|
// child: Scaffold(
|
|
|
|
// resizeToAvoidBottomInset: false,
|
|
|
|
// backgroundColor: MyColours.color_ffffff,
|
|
|
|
// appBar: SystemAppBar(
|
|
|
|
// '联系人',
|
|
|
|
// onTap: () {
|
|
|
|
// EventBus().emit('changeStatusColor');
|
|
|
|
// Navigator.of(context).pop();
|
|
|
|
// },
|
|
|
|
// ),
|
|
|
|
// body: WillPopScope(
|
|
|
|
// child: SafeArea(
|
|
|
|
// child: Column(
|
|
|
|
// children: <Widget>[
|
|
|
|
// Container(
|
|
|
|
// // color: Colors.red,
|
|
|
|
// padding: EdgeInsets.symmetric(
|
|
|
|
// horizontal: ScreenUtil().setWidth(40),
|
|
|
|
// vertical: ScreenUtil().setWidth(10)),
|
|
|
|
// height: ScreenUtil().setWidth(45 * 2),
|
|
|
|
// // alignment: Alignment.center,
|
|
|
|
// child: Stack(
|
|
|
|
// children: [
|
|
|
|
// Container(
|
|
|
|
// alignment: Alignment.center,
|
|
|
|
// padding: EdgeInsets.symmetric(
|
|
|
|
// horizontal: ScreenUtil().setWidth(20 * 2),
|
|
|
|
// vertical: ScreenUtil().setWidth(14)),
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
// color: MyColours.color_F0F0F0,
|
|
|
|
// borderRadius: BorderRadius.circular(
|
|
|
|
// ScreenUtil().setWidth(24 * 2))),
|
|
|
|
// child: TextField(
|
|
|
|
// maxLines: 1,
|
|
|
|
// controller: contantShowModel.controller,
|
|
|
|
// // focusNode: _focusNode,
|
|
|
|
// // autofocus: true,
|
|
|
|
// style: TextStyle(
|
|
|
|
// color: MyColours.color_333333,
|
|
|
|
// fontSize: ScreenUtil().setSp(30)),
|
|
|
|
// // textAlignVertical: TextAlignVertical.center,
|
|
|
|
// decoration: InputDecoration(
|
|
|
|
// contentPadding: EdgeInsets.only(
|
|
|
|
// right: ScreenUtil().setWidth(40 * 2)),
|
|
|
|
// hintText: "搜索联系人",
|
|
|
|
// hintStyle: TextStyle(
|
|
|
|
// color: MyColours.color_999999,
|
|
|
|
// fontSize: ScreenUtil().setSp(30),
|
|
|
|
// ),
|
|
|
|
// isCollapsed:
|
|
|
|
// true, //重点,相当于高度包裹的意思,必须设置为true,不然有默认奇妙的最小高度
|
|
|
|
// border: OutlineInputBorder(
|
|
|
|
// borderSide: BorderSide.none),
|
|
|
|
// // 左边图标设置
|
|
|
|
// icon: Image.asset(
|
|
|
|
// Utils.getImgPath('search'),
|
|
|
|
// width: ScreenUtil().setWidth(30),
|
|
|
|
// ),
|
|
|
|
// //右边图标设置
|
|
|
|
// // suffixIcon:
|
|
|
|
// ),
|
|
|
|
// keyboardType: TextInputType.text,
|
|
|
|
// textInputAction: TextInputAction.done,
|
|
|
|
|
|
|
|
onChanged: (value) {
|
|
|
|
// setState(() {});
|
|
|
|
// _searchSellerLocation();
|
|
|
|
contantShowModel.searchData(value);
|
|
|
|
},
|
|
|
|
onEditingComplete: () {
|
|
|
|
FocusScope.of(context).requestFocus(
|
|
|
|
FocusNode()); //点击空白处隐藏键盘
|
|
|
|
// contantShowModel.searchData(
|
|
|
|
// contantShowModel.controller.text);
|
|
|
|
// _searchSellerLocation();
|
|
|
|
// _focusNode.unfocus();
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Positioned(
|
|
|
|
right: 0,
|
|
|
|
top: 0,
|
|
|
|
bottom: 0,
|
|
|
|
child: Offstage(
|
|
|
|
offstage:
|
|
|
|
contantShowModel.controller.text ==
|
|
|
|
'',
|
|
|
|
child: GestureDetector(
|
|
|
|
child: Container(
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
right: ScreenUtil()
|
|
|
|
.setWidth(20 * 2)),
|
|
|
|
// color: Colors.orange,
|
|
|
|
height:
|
|
|
|
ScreenUtil().setWidth(45 * 2),
|
|
|
|
width:
|
|
|
|
ScreenUtil().setWidth(100 * 2),
|
|
|
|
alignment: Alignment.centerRight,
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath('clear'),
|
|
|
|
width: ScreenUtil().setWidth(30),
|
|
|
|
height: ScreenUtil().setWidth(30),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
onTap: () {
|
|
|
|
WidgetsBinding.instance
|
|
|
|
.addPostFrameCallback(((_) {
|
|
|
|
contantShowModel.controller
|
|
|
|
.clear();
|
|
|
|
contantShowModel.searchData('');
|
|
|
|
}));
|
|
|
|
},
|
|
|
|
)))
|
|
|
|
],
|
|
|
|
)),
|
|
|
|
Container(
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
bottom: ScreenUtil().setWidth(10)),
|
|
|
|
margin: EdgeInsets.symmetric(
|
|
|
|
horizontal: ScreenUtil().setWidth(30)),
|
|
|
|
child: TabBar(
|
|
|
|
controller: tabController,
|
|
|
|
indicator: CustomTabIndicator(
|
|
|
|
radius: 0,
|
|
|
|
),
|
|
|
|
indicatorColor: MyColours.color_199095,
|
|
|
|
indicatorSize: TabBarIndicatorSize.tab,
|
|
|
|
// indicatorPadding: EdgeInsets.symmetric(
|
|
|
|
// horizontal: ScreenUtil().setWidth(12)),
|
|
|
|
labelColor: MyColours.color_199095,
|
|
|
|
labelStyle: TextStyle(
|
|
|
|
fontSize: ScreenUtil().setSp(32),
|
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
labelPadding: EdgeInsets.zero,
|
|
|
|
unselectedLabelStyle:
|
|
|
|
TextStyle(fontWeight: FontWeight.normal),
|
|
|
|
unselectedLabelColor: MyColours.color_999999,
|
|
|
|
tabs: _tabBarTitle.map((value) {
|
|
|
|
return Tab(
|
|
|
|
child: Text(value),
|
|
|
|
);
|
|
|
|
}).toList()),
|
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
child: TabBarView(
|
|
|
|
controller: tabController,
|
|
|
|
// physics: NeverScrollableScrollPhysics(),
|
|
|
|
children: <Widget>[
|
|
|
|
ContantLeftPage(),
|
|
|
|
ContantRightPage(),
|
|
|
|
],
|
|
|
|
)),
|
|
|
|
],
|
|
|
|
)),
|
|
|
|
onWillPop: () async {
|
|
|
|
EventBus().emit('changeStatusColor');
|
|
|
|
return true;
|
|
|
|
}))));
|
|
|
|
}
|
|
|
|
} |
|
|
|
// onChanged: (value) {
|
|
|
|
// // setState(() {});
|
|
|
|
// // _searchSellerLocation();
|
|
|
|
// contantShowModel.searchData(value);
|
|
|
|
// },
|
|
|
|
// onEditingComplete: () {
|
|
|
|
// FocusScope.of(context).requestFocus(
|
|
|
|
// FocusNode()); //点击空白处隐藏键盘
|
|
|
|
// // contantShowModel.searchData(
|
|
|
|
// // contantShowModel.controller.text);
|
|
|
|
// // _searchSellerLocation();
|
|
|
|
// // _focusNode.unfocus();
|
|
|
|
// },
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// Positioned(
|
|
|
|
// right: 0,
|
|
|
|
// top: 0,
|
|
|
|
// bottom: 0,
|
|
|
|
// child: Offstage(
|
|
|
|
// offstage:
|
|
|
|
// contantShowModel.controller.text ==
|
|
|
|
// '',
|
|
|
|
// child: GestureDetector(
|
|
|
|
// child: Container(
|
|
|
|
// padding: EdgeInsets.only(
|
|
|
|
// right: ScreenUtil()
|
|
|
|
// .setWidth(20 * 2)),
|
|
|
|
// // color: Colors.orange,
|
|
|
|
// height:
|
|
|
|
// ScreenUtil().setWidth(45 * 2),
|
|
|
|
// width:
|
|
|
|
// ScreenUtil().setWidth(100 * 2),
|
|
|
|
// alignment: Alignment.centerRight,
|
|
|
|
// child: Image.asset(
|
|
|
|
// Utils.getImgPath('clear'),
|
|
|
|
// width: ScreenUtil().setWidth(30),
|
|
|
|
// height: ScreenUtil().setWidth(30),
|
|
|
|
// ),
|
|
|
|
// ),
|
|
|
|
// onTap: () {
|
|
|
|
// WidgetsBinding.instance
|
|
|
|
// .addPostFrameCallback(((_) {
|
|
|
|
// contantShowModel.controller
|
|
|
|
// .clear();
|
|
|
|
// contantShowModel.searchData('');
|
|
|
|
// }));
|
|
|
|
// },
|
|
|
|
// )))
|
|
|
|
// ],
|
|
|
|
// )),
|
|
|
|
// Container(
|
|
|
|
// padding: EdgeInsets.only(
|
|
|
|
// bottom: ScreenUtil().setWidth(10)),
|
|
|
|
// margin: EdgeInsets.symmetric(
|
|
|
|
// horizontal: ScreenUtil().setWidth(30)),
|
|
|
|
// child: TabBar(
|
|
|
|
// controller: tabController,
|
|
|
|
// indicator: CustomTabIndicator(
|
|
|
|
// radius: 0,
|
|
|
|
// ),
|
|
|
|
// indicatorColor: MyColours.color_199095,
|
|
|
|
// indicatorSize: TabBarIndicatorSize.tab,
|
|
|
|
// // indicatorPadding: EdgeInsets.symmetric(
|
|
|
|
// // horizontal: ScreenUtil().setWidth(12)),
|
|
|
|
// labelColor: MyColours.color_199095,
|
|
|
|
// labelStyle: TextStyle(
|
|
|
|
// fontSize: ScreenUtil().setSp(32),
|
|
|
|
// fontWeight: FontWeight.bold),
|
|
|
|
// labelPadding: EdgeInsets.zero,
|
|
|
|
// unselectedLabelStyle:
|
|
|
|
// TextStyle(fontWeight: FontWeight.normal),
|
|
|
|
// unselectedLabelColor: MyColours.color_999999,
|
|
|
|
// tabs: _tabBarTitle.map((value) {
|
|
|
|
// return Tab(
|
|
|
|
// child: Text(value),
|
|
|
|
// );
|
|
|
|
// }).toList()),
|
|
|
|
// ),
|
|
|
|
// Expanded(
|
|
|
|
// child: TabBarView(
|
|
|
|
// controller: tabController,
|
|
|
|
// // physics: NeverScrollableScrollPhysics(),
|
|
|
|
// children: <Widget>[
|
|
|
|
// ContantLeftPage(),
|
|
|
|
// ContantRightPage(),
|
|
|
|
// ],
|
|
|
|
// )),
|
|
|
|
// ],
|
|
|
|
// )),
|
|
|
|
// onWillPop: () async {
|
|
|
|
// EventBus().emit('changeStatusColor');
|
|
|
|
// return true;
|
|
|
|
// }))));
|
|
|
|
// }
|
|
|
|
// } |
...
|
...
|
|