You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

191 lines
6.6 KiB
Dart

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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