contant_page.dart 6.96 KB
import 'package:flutter/material.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/widgets/custom_tab_indicator.dart';
import 'package:one_key/widgets/system_app_bar.dart';

import 'package:provider/provider.dart';

class ContactListPage extends StatefulWidget {
  @override
  _ContactListPageState createState() => _ContactListPageState();
}

class _ContactListPageState extends State<ContactListPage>
    with TickerProviderStateMixin {
  List<Contact> _contacts;
  List _tabBarTitle;
  TabController tabController;
  TextEditingController controller = TextEditingController();
  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 Scaffold(
        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: 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(
                        controller: controller,
                        // focusNode: _focusNode,
                        // autofocus: true,

                        style: TextStyle(
                            color: MyColours.color_333333,
                            fontSize: ScreenUtil().setSp(30),
                            textBaseline: TextBaseline.alphabetic),
                        textAlignVertical: TextAlignVertical.center,
                        decoration: InputDecoration(
                            hintText: "搜索联系人",
                            hintStyle: TextStyle(
                              color: MyColours.color_999999,
                              fontSize: ScreenUtil().setSp(30),
                            ),
                            isCollapsed:
                                true, //重点,相当于高度包裹的意思,必须设置为true,不然有默认奇妙的最小高度
                            border: InputBorder.none,
                            //左边图标设置
                            icon: Image.asset(
                              Utils.getImgPath('search'),
                              width: ScreenUtil().setWidth(30),
                            ),
                            //右边图标设置
                            suffixIcon: GestureDetector(
                              child: Container(
                                height: ScreenUtil().setWidth(30),
                                width: ScreenUtil().setWidth(30),
                                alignment: Alignment.centerRight,
                                child: Image.asset(
                                  Utils.getImgPath('clear'),
                                  width: ScreenUtil().setWidth(30),
                                ),
                              ),
                              onTap: () {
                                WidgetsBinding.instance.addPostFrameCallback(
                                    ((_) => controller.clear()));
                              },
                            )),
                        keyboardType: TextInputType.text,
                        textInputAction: TextInputAction.search,
                        onChanged: (value) {
                          setState(() {});
                          // _searchSellerLocation();
                          contantShowModel.searchData(value);
                        },
                        onEditingComplete: () {
                          // _searchSellerLocation();
                          // _focusNode.unfocus();
                        },
                      ),
                    )),
                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;
            }));
  }
}