import 'dart:async'; import 'dart:io'; import 'dart:math'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:limiting_direction_csx/limiting_direction_csx.dart'; import 'package:wow_english/common/core/user_util.dart'; import 'package:wow_english/common/extension/string_extension.dart'; import 'package:wow_english/common/request/config.dart'; import 'package:wow_english/models/user_entity.dart'; import 'package:wow_english/route/route.dart'; import 'package:wow_english/utils/log_util.dart'; import 'package:wow_english/utils/sp_util.dart'; class SplashPage extends StatelessWidget { const SplashPage({super.key}); @override Widget build(BuildContext context) { return const TransitionView(); } } class TransitionView extends StatefulWidget { const TransitionView({super.key}); @override State createState() { return _TransitionViewState(); } } class _TransitionViewState extends State { Future startTime() async { // 判断是否登录 UserEntity? userEntity = UserUtil.getUser(); Log.d('当前模式:kDebugMode=$kDebugMode, kProfileMode=$kProfileMode, kReleaseMode=$kReleaseMode'); Log.d('当前API地址:${RequestConfig.baseUrl}'); if (kDebugMode) { Log.d('Splash读本地userEntity: $userEntity'); } int apartInMilliseconds = 0; // 调一下接口判断一下有效性再往下 if (userEntity != null) { DateTime startTime = DateTime.now(); // try { // userEntity = await UserDao.getUserInfo(); // UserUtil.saveUser(userEntity); // } catch (e) { // e.logE(); // } apartInMilliseconds = DateTime.now().difference(startTime).inMilliseconds; } Log.d('Splash getUserInfo 耗时:${apartInMilliseconds}ms'); int duration = max(2000 - apartInMilliseconds, 0); Timer(Duration(milliseconds: duration), () { /*if (userEntity != null) { pushNamedAndRemoveUntil(AppRouteName.home, (route) => false); } else { pushNamedAndRemoveUntil(AppRouteName.login, (route) => false); }*/ pushNamedAndRemoveUntil(AppRouteName.home, (route) => false); }); } @override void initState() { super.initState(); init(); } void init() async { await SpUtil.preInit(); startTime(); changeDevice(); } void changeDevice() async { ///设置设备默认方向 WidgetsFlutterBinding.ensureInitialized(); if (Platform.isIOS) { await LimitingDirectionCsx.setScreenDirection(DeviceDirectionMask.Landscape); } else { await SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]); } } @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Container( decoration: BoxDecoration( image: DecorationImage( image: AssetImage( 'splash'.assetGif, ), fit: BoxFit.fill)), ), ), ); } }