splash_page.dart 2.25 KB
import 'dart:async';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:wow_english/common/core/user_util.dart';
import 'package:wow_english/common/extension/string_extension.dart';
import 'package:wow_english/models/user_entity.dart';
import 'package:wow_english/route/route.dart';
import 'package:wow_english/utils/sp_util.dart';
import 'package:flutter/services.dart';
import 'package:limiting_direction_csx/limiting_direction_csx.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<StatefulWidget> createState() {
    return _TransitionViewState();
  }
}

class _TransitionViewState extends State<TransitionView> {
  Future startTime() async {
    // 判断是否登录
    UserEntity? userEntity = UserUtil.getUser();
    if (kDebugMode) {
      print('Splash读本地userEntity: $userEntity');
    }
    Timer(const Duration(seconds: 2), () {
      if (userEntity != null) {
        // todo 调一下接口判断一下有效性再往下
        pushNamedAndRemoveUntil(AppRouteName.home, (route) => false);
      } else {
        pushNamedAndRemoveUntil(AppRouteName.login, (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)),
        ),
      ),
    );
  }
}