191 lines
6.6 KiB
Dart
191 lines
6.6 KiB
Dart
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,
|
||
// ), //显示加载中的圈圈,
|
||
// ),
|
||
// ),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
);
|
||
}
|
||
}
|