251 lines
7.5 KiB
Dart
251 lines
7.5 KiB
Dart
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<String, dynamic>? thisParams;
|
||
|
||
@override
|
||
_StartPageState createState() => _StartPageState();
|
||
}
|
||
|
||
class _StartPageState extends State<StartPage> {
|
||
static final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
|
||
StreamSubscription? subscription;
|
||
final StartModel _viewModel = StartModel();
|
||
|
||
@override
|
||
void didChangeDependencies() {
|
||
super.didChangeDependencies();
|
||
}
|
||
|
||
// 获取原生的值
|
||
invokeNativeMethod(String method, Map<String, dynamic> 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<String, dynamic> responseData = jsonDecode(userName);
|
||
UserBean bean = UserBean.fromJson(responseData);
|
||
NetworkConfig.userId = bean.userId!;
|
||
NetworkConfig.token = bean.token!;
|
||
NetworkConfig.userToken = bean.userToken!;
|
||
Map<String, String> 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<void> initData() async {
|
||
try {
|
||
Future<dynamic> IsFirst = getIsFirst(); //是否首次打开
|
||
IsFirst.then((dynamic bean) {
|
||
initApi();
|
||
});
|
||
} on PlatformException catch (e) {}
|
||
}
|
||
|
||
//初始化信息
|
||
initApi() async {
|
||
initPlatformState();
|
||
getUser();
|
||
//原生回调参数
|
||
dynamic headers = await Global.method.invokeMethod("getRequestHeaders");
|
||
Map<String, dynamic> headersMap = Map<String, dynamic>.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<dynamic> 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<void> 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<String, String> 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'),
|
||
)),
|
||
],
|
||
));
|
||
}
|
||
}
|