import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'package:aiplot/tools/start_model.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:device_info/device_info.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../bean/user_bean.dart'; import '../common/Global.dart'; import '../generated/l10n.dart'; import '../network/NetworkConfig.dart'; class StartPage extends StatefulWidget { StartPage({Key? key, this.thisParams}) : super(key: key); final Map? thisParams; @override _StartPageState createState() => _StartPageState(); } class _StartPageState extends State { static final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin(); StreamSubscription? subscription; final StartModel _viewModel = StartModel(); @override void didChangeDependencies() { super.didChangeDependencies(); } // 获取原生的值 invokeNativeMethod(String method, Map map) async { dynamic args; try { args = await Global.method.invokeMethod(method, map); } on PlatformException catch (e) {} } //获取用户验签 getUser() async { SharedPreferences prefs = await SharedPreferences.getInstance(); String userName = prefs.getString("UserBean")!; if (userName != null && userName.isNotEmpty) { Map responseData = jsonDecode(userName); UserBean bean = UserBean.fromJson(responseData); NetworkConfig.userId = bean.userId!; NetworkConfig.token = bean.token!; NetworkConfig.userToken = bean.userToken!; Map map = { "userId": NetworkConfig.userId, "token": NetworkConfig.token, "userToken": NetworkConfig.userToken, }; invokeNativeMethod("userData", map); } else { NetworkConfig.userId = ""; NetworkConfig.token = ""; NetworkConfig.userToken = ""; } } geLanguageSw() async { SharedPreferences prefs = await SharedPreferences.getInstance(); String? NetworkSet = prefs.getString("LanguageSw"); return NetworkSet; } getIsFirst() async { SharedPreferences prefs = await SharedPreferences.getInstance(); String? IsFirst = prefs.getString("IsFirst"); return IsFirst; } setIsFirst() async { SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setString("IsFirst", "1"); } cleanUser() async { SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setString("UserBean", ""); } var nTime; @override void initState() { // TODO: implement initState super.initState(); var nowTime = DateTime.now(); //获取当前时间 nTime = nowTime.millisecondsSinceEpoch; //单位是毫秒(千分之一秒),13位时间戳 if (Platform.isIOS) { subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) { // Got a new connectivity status! if (result == ConnectivityResult.mobile || result == ConnectivityResult.wifi) { setState(() { getServerInfo(); }); } }); } //网络请求回调 subscription = _viewModel.streamController.stream.listen((newData) { String code = newData['code']; if (code.isNotEmpty) { switch (code) { case "getServerList": //获取配置 _viewModel.getAppConfig(); break; case "getAppConfig": if (!NetworkConfig.isTest) { if (NetworkConfig.userId == "") { //进入首页 Navigator.of(context).pushReplacementNamed('/HomePage'); } else { //请求用户信息接口,判断用户验签是否过期 _viewModel.getUserData(); } } else { _viewModel.userLogin(); } break; case "visitorLogin": //游客登录 Navigator.of(context).pushReplacementNamed('/HomePage'); break; case "getUserData": //验签成功 //进入首页 Navigator.of(context).pushReplacementNamed('/HomePage'); break; case "userTokenExpire": //用户token过期,重置信息 cleanUser(); NetworkConfig.userId = ""; NetworkConfig.token = ""; NetworkConfig.userToken = ""; Navigator.of(context).pushReplacementNamed('/HomePage'); break; default: Navigator.of(context).pushReplacementNamed('/HomePage'); break; } } setState(() {}); }); //初始化信息 initData(); } // 获取原生的值 Future initData() async { try { Future IsFirst = getIsFirst(); //是否首次打开 IsFirst.then((dynamic bean) { initApi(); }); } on PlatformException catch (e) {} } //初始化信息 initApi() async { initPlatformState(); getUser(); //原生回调参数 dynamic headers = await Global.method.invokeMethod("getRequestHeaders"); Map headersMap = Map.from(headers); NetworkConfig.AppId = headersMap["AppId"]; NetworkConfig.BossId = headersMap["BossId"]; NetworkConfig.Version = headersMap["Version"]; NetworkConfig.CPU = headersMap["CPU"]; NetworkConfig.imsi = headersMap["imsi"]; NetworkConfig.ip = headersMap["ip"]; NetworkConfig.timeZone = headersMap["timeZone"]; NetworkConfig.statusHeight = headersMap["statusHeight"]; Future isLanguageSw = geLanguageSw(); isLanguageSw.then((dynamic bean) { if (bean != null && bean != "") { NetworkConfig.Language = bean; } else { String lc = Localizations.localeOf(context).languageCode; if (lc != "zh") { if (lc != "ja") { NetworkConfig.Language = "en"; } else { NetworkConfig.Language = Localizations.localeOf(context).languageCode; } } else { NetworkConfig.Language = Localizations.localeOf(context).languageCode; } } S.load(Locale.fromSubtags(languageCode: NetworkConfig.Language)); }); getServerInfo(); } //获取设备信息 Future initPlatformState() async { try { if (Platform.isAndroid) { var build = await deviceInfoPlugin.androidInfo; NetworkConfig.deviceID = build.androidId; NetworkConfig.systemVersion = build.version.release; } else if (Platform.isIOS) { var build = await deviceInfoPlugin.iosInfo; NetworkConfig.deviceID = build.identifierForVendor; } } on PlatformException {} Map map = {"SensorsAnaly": "0"}; invokeNativeMethod("initAPI", map); } //获取服务信息 getServerInfo() { _viewModel.getServerList(); } @override void dispose() { subscription?.cancel(); super.dispose(); } @override Widget build(BuildContext context) { // TODO: implement build return Scaffold( backgroundColor: Colors.white, body: Stack( children: [ Container( width: double.infinity, height: double.infinity, child: const Image( fit: BoxFit.fitHeight, height: double.infinity, image: AssetImage('assets/images/kpy.png'), )), ], )); } }