import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; //import 'package:flustars/flustars.dart' as flustars; //该组件中有ScreenUtil,// 获取网络图片尺寸flustars.WidgetUtil import 'package:hyzp_ybqx03_junlian/pages/Works/TJXX/tj_data.dart'; import 'package:hyzp_ybqx03_junlian/services/EventBus.dart'; import 'package:hyzp_ybqx03_junlian/widget/my_Tabs.dart' as my_Tabs; import '../../components/commonFun.dart'; import '../../services/Storage.dart'; import 'FaceLogin2.dart'; import 'LoginByName2.dart'; // class LoginTabsWidget extends StatelessWidget { // // This widget is the root of your application. // @override // Widget build(BuildContext context) { // //Flutter 强制竖屏 // SystemChrome.setPreferredOrientations([ // DeviceOrientation.portraitUp, //只能纵向 // DeviceOrientation.portraitDown, //只能纵向 // ]); // // return MaterialApp( // debugShowCheckedModeBanner: false, // title: 'Flutter Demo', // theme: ThemeData( // primarySwatch: Colors.blue, // visualDensity: VisualDensity.adaptivePlatformDensity, // ), // home: MyHomePage(title: 'Flutter Demo Home Page'), // ); // } // } class LoginTabsWidget extends StatefulWidget { LoginTabsWidget({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State with SingleTickerProviderStateMixin { int loginTabs_index = 0; //用TabController实现顶部tab切换 TabController _tabController; //try_setState(); //避免如下异常报错 try_setState() { try { setState(() {}); } catch (e) { print('setState(() {})异常:${e}'); } } @override void initState() { super.initState(); //若下面文件不存在, // /data/data/com.flutter.hyzp_ybqx03_junlian/shared_prefs/FlutterSharedPreferences.xml // value为null, 会抛出异常: // [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: Invalid argument(s): The source must not be null // int.parse (dart:core-patch/integers_patch.dart:51:25) Storage.getString("tabs_index").then((value) { g_iIndex = (null == value) ? 0 : int.parse(value); }); Storage.getString("LoginTabs_index").then((value) { loginTabs_index = (null == value) ? 0 : int.parse(value); print('loginTabs_index = ${loginTabs_index}'); //用TabController实现顶部tab切换,并设置默认 Tab。initialIndex: loginTabs_index _tabController = TabController(vsync: this, length: 2, initialIndex: loginTabs_index); //监听 _tabController 切换事件 _tabController.addListener(() { Storage.setString("LoginTabs_index", _tabController.index.toString()); print('_tabController.index = ${_tabController.index}'); }); //Flutter DefaultTabController 获取/设置当前 Tab - OK DefaultTabController.of(_scaffoldKey.currentContext).animateTo(loginTabs_index); try_setState(); }); //监听统计数据改变事件 eventBus.on().listen((event) { print(event.str); updateMayLogin(); }); } //处理延迟登录 updateMayLogin() { //判断从网络获取三种统计数据是否完成 // if (listZptjStatisAlone.length >= dwSum && // listTodayShtj.length >= dwSum && // listClltjStatisAlone.length >= dwSum) { // bMayLogin = true; // } if (listAllStatisData.length >= dwSum) { bMayLogin = true; } else { bMayLogin = false; } try_setState(); } dispose() { _tabController?.dispose(); super.dispose(); } double _height = ScreenUtil().setHeight(1026); final GlobalKey _scaffoldKey = new GlobalKey(); @override Widget build(BuildContext context) { return Container( width: double.infinity, height: _height, child: DefaultTabController( length: 2, child: Scaffold( key: _scaffoldKey, backgroundColor: Colors.transparent, appBar: PreferredSize( preferredSize: Size.fromHeight(50), // here the desired height child: AppBar( backgroundColor: Colors.transparent, bottom: TabBar( controller: _tabController, indicatorSize: TabBarIndicatorSize.label, labelColor: Color.fromRGBO(49, 216, 123, 1), unselectedLabelColor: Color.fromRGBO(118, 135, 162, 1), //tabs: [Tab(text: " 密码登录 "), Tab(text: " 刷脸登录 ")], tabs: [ my_Tabs.MyTab( text: " 密码登录 ", style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold)), my_Tabs.MyTab( text: " 刷脸登录 ", style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold)) ], // tabs: [ // Text(" 密码登录 ", style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold)), // Text(" 刷脸登录 ", style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold)), // ], ), ), ), body: Stack( children: [ TabBarView( controller: _tabController, //flutter tabbar禁止手势滑动-OK physics: new NeverScrollableScrollPhysics(), children: [ LoginByName2(height: _height), FaceLogin2(), ], ), // bMayLogin // ? SizedBox.shrink() // : Positioned( // left: ScreenUtil().setWidth(0), // right: ScreenUtil().setWidth(0), // top: ScreenUtil().setHeight(297), // child: Container( // height: 200, // width: 400, // child: getMoreWidget2( // text: '正在获取网络数据 ...', // color: Colors.orangeAccent, // size: 25.0, // strokeWidth: 3.0, // fontWeight: FontWeight.w600, // edge: 0, // height: 60, // ), //显示加载中的圈圈, // ), // ), ], ), ), ), ); } }