Files
hyzp_ybqx/lib/pages/Login/LoginTabsWidget.dart
T

191 lines
6.6 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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_ybqx/pages/Works/TJXX/tj_data.dart';
import 'package:hyzp_ybqx/services/EventBus.dart';
import 'package:hyzp_ybqx/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<LoginTabsWidget> 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_ybqx/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<StatisDataUpdate>().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<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
@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: <Widget>[Tab(text: " 密码登录 "), Tab(text: " 刷脸登录 ")],
tabs: <Widget>[
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: <Widget>[
// 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: <Widget>[
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,
// ), //显示加载中的圈圈,
// ),
// ),
],
),
),
),
);
}
}