import 'dart:async'; import 'dart:io'; import 'package:fake_push/fake_push.dart'; import 'package:flustars/flustars.dart' as f; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:liftmanager/cache/cache_manager.dart'; import 'package:liftmanager/common/common.dart'; import 'package:liftmanager/common/user_db.dart'; import 'package:liftmanager/internal/account/account_router.dart'; import 'package:liftmanager/internal/account/model/user_info_entity.dart'; import 'package:liftmanager/internal/wode/model/version_item.dart'; import 'package:liftmanager/internal/wode/wode_router.dart'; import 'package:liftmanager/net/api_service.dart'; import 'package:fluwx/fluwx.dart' as fluwx; import 'package:liftmanager/routers/fluro_navigator.dart'; import 'package:liftmanager/utils/toast.dart'; import 'package:liftmanager/widgets/app_bar.dart'; import 'package:liftmanager/widgets/click_item.dart'; import 'package:liftmanager/widgets/my_button.dart'; import 'package:flustars/flustars.dart' as flutter_stars; import 'package:liftmanager/widgets/update_dialog.dart'; import 'package:package_info/package_info.dart'; class SettingPage extends StatefulWidget { @override State createState() { return SettingPageState(); } } class SettingPageState extends State { Push _push = Push(); UserInfoEntity userInfoEntity = UserInfoEntity(); StreamSubscription _wxlogin; PackageInfo packageInfo; String sizeStr = ""; bool _isWechatInstalled = false; VersionItem versionItem = VersionItem(); @override void initState() { // TODO: implement initState super.initState(); _initFluwx(); getSize(); getInfo(); _wxlogin = fluwx.responseFromAuth.listen((res) { switch (res.errCode) { case -4: { //拒绝 toasts("已拒绝"); break; } case -2: { //取消 toasts("已取消"); break; } case 0: { if (res.type != 2) { bindMobile(res.code); } break; } } }); getUserInfo(); getNewVersion(); } getNewVersion(){ ApiService(context: context).version(onSuccess: (res){ if(res !=null){ versionItem = res; setState(() { }); } },onError: (code,msg){ toasts(msg); }); } getInfo() async { packageInfo = await PackageInfo.fromPlatform(); } _initFluwx() async { await fluwx.registerWxApi( appId: "wx0f10e6386fb9969e", doOnAndroid: true, doOnIOS: true, universalLink: "https://www.edtyun.com/"); var result = await fluwx.isWeChatInstalled(); _isWechatInstalled = result; setState(() {}); } void getUserInfo() { ApiService(context: context).userInfo( onSuccess: (data) { userInfoEntity = data; setState(() {}); }, onError: (code, msg) {}); } bindMobile(authCode) { ApiService(context: context).accountAppBindMobile(authCode, onSuccess: (res) { userInfoEntity.wxBindFlag = true; setState(() {}); }, onError: (code, msg) { toasts(msg); }); } getSize() async { int size = await getCacheSize(); if (size < 1024) { sizeStr = "${size}Kb"; } else if (size < 1024 * 1024) { sizeStr = "${size / 1024}Mb"; } } void _showUpdateDialog() { showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return UpdateDialog(content: versionItem.content,url:versionItem.url,version: versionItem.version,forceUpdate: versionItem.forceUpdate==1?true:false,); } ); } @override void dispose() { // TODO: implement dispose super.dispose(); _wxlogin.cancel(); } @override Widget build(BuildContext context) { String theme = flutter_stars.SpUtil.getString(Constant.theme); String themeMode; switch (theme) { case "Dark": themeMode = "开启"; break; case "Light": themeMode = "关闭"; break; default: themeMode = "跟随系统"; break; } return Scaffold( appBar: MyAppBar( centerTitle: "设置", ), body: ListView(padding: EdgeInsets.all(0.0), children: [ ClickItem( title: "清理缓存", content: sizeStr, onTap: () { showAlert( context, "提示", "清除所有的保养暂存记录?", "清除", () { NavigatorUtils.goBack(context); clearCache(); getSize(); toasts("已清除"); }, txt2: "取消", onPre2: () { NavigatorUtils.goBack(context); }); }, ), Offstage( offstage: !_isWechatInstalled, child: ClickItem( title: "微信绑定", content: userInfoEntity.wxBindFlag ? '已绑定' : '未绑定', onTap: () { if (userInfoEntity.wxBindFlag) { return; } fluwx.sendWeChatAuth( scope: "snsapi_userinfo", ); }, )), ClickItem( title: "夜间模式", content: themeMode, onTap: () => NavigatorUtils.push(context, WodeRouter.themePage)), ClickItem( title: "版本", content: packageInfo?.version, onTap: (){ if(versionItem.code > int.parse(packageInfo?.buildNumber)){ _showUpdateDialog(); }else{ toasts("已是最新版本。"); } }, ), Padding( padding: const EdgeInsets.all(16), child: MyButton( onPressed: () { showAlert( context, "提示", "是否确定退出?", "确定", () { User().clearUser(); _push.unbindAccount( account: f.SpUtil.getString(Constant.phone)); NavigatorUtils.push(context, AccountRouter.loginPage, clearStack: true); }, txt2: "取消", onPre2: () { NavigatorUtils.goBack(context); }); }, text: "退出当前账号", ), ) ])); } }