FondleTalk/lib/tools/start_page.dart
2024-12-17 22:07:32 +08:00

116 lines
2.9 KiB
Dart

import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:talk/network/NetworkConfig.dart';
import '../common/Global.dart';
import '../common/func.dart';
import '../dialog/agreement_dialog.dart';
import 'login/login_model.dart';
class StartPage extends StatefulWidget {
const StartPage({super.key});
@override
State<StartPage> createState() => _StartPageState();
}
class _StartPageState extends State<StartPage> {
late StreamSubscription subscription;
final LoginModel _viewmodel = LoginModel();
@override
void initState() {
// TODO: implement initState
super.initState();
subscription = _viewmodel.streamController.stream.listen((newData) {
String code = newData['code'];
if (code.isNotEmpty) {
switch (code) {
case "login":
Navigator.pushReplacementNamed(context, "/HomePage");
break;
default:
Navigator.pushReplacementNamed(context, "/HomePage");
break;
}
}
});
getIsFirst();
}
@override
void dispose() {
// TODO: implement dispose
subscription.cancel();
super.dispose();
}
Future<void> _loadData() async {
// 获取token
final SharedPreferences prefs = await SharedPreferences.getInstance();
final String token = prefs.getString('token') ?? "";
if (token != "") {
_viewmodel.login("", "", 0, token);
} else {
Navigator.pushReplacementNamed(context, "/HomePage");
}
Map<String, dynamic> map = {
"initData": "initData",
};
invokeNativeMethod("initData", map);
setIsFirst();
}
///判断是否首次进入
getIsFirst() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool isFirst = prefs.getBool("IsFirst") ?? true;
NetworkConfig.isTeenage = prefs.getBool("isTeenage") ?? false;
NetworkConfig.teenagePassword = prefs.getString("teenagePassword") ?? '';
if (isFirst) {
FunctionUtil.popDialog2(context, AgreementDialog(
onTap: (index) {
if (index == 0) {
_loadData();
} else {
SystemNavigator.pop();
exit(0);
}
},
));
} else {
_loadData();
}
}
setIsFirst() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool("IsFirst", false);
}
@override
Widget build(BuildContext context) {
return Image(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
fit: BoxFit.cover,
image: const AssetImage('assets/images/img_start.png'),
);
}
// 获取原生的值
invokeNativeMethod(String method, Map<String, dynamic> map) async {
dynamic args;
try {
args = await Global.method.invokeMethod(method, map);
} on PlatformException catch (e) {}
}
}