import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_habit/common/BaseArchitectural.dart'; import 'package:flutter_habit/common/I18N.dart'; import 'package:flutter_habit/common/LocalData.dart'; import 'package:flutter_habit/common/SqfliteDataBase.dart'; import 'package:flutter_habit/provider/ConfigProvider.dart'; import 'package:flutter_habit/provider/DataProvider.dart'; import 'package:flutter_habit/provider/NotificationProvider.dart'; import 'package:flutter_habit/provider/UserProvider.dart'; import 'package:flutter_habit/provider/ThemeProvider.dart'; import 'package:flutter_habit/pages/home_page.dart'; import 'package:provider/provider.dart'; /// Description: Spalsh Page /// Time : 08/17/2023 Thursday /// Author : liuyuqi.gov@msn.cn class SplashPage extends StatelessWidget { @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider( create: (_) => SplashPageProvider(context)), ], child: _LoadingPageView(), ); } } // service class SplashPageProvider extends BaseProvider { SplashPageProvider(BuildContext context) : super(context); Timer? timer; bool? isLoaded; Future loadData(BuildContext context) async { // ================================== init ================================== await LocalData.init(); // LocalData.getInstance().clear(); I18N.init(); Provider.of(context, listen: false).init(); Provider.of(context, listen: false).init(); Provider.of(context, listen: false).init(); await Provider.of(context, listen: false).init(); await SqfliteDataBase.init(); // await SqfliteDataBase.resetTables(); await Provider.of(context, listen: false).init(); isLoaded = true; // ================================== over ================================== } @override void init(BuildContext context) { print("---------init-------------spalsh-------------provider"); super.init(context); isLoaded = false; timer = null; startCountDown(context); loadData(context); } void startCountDown(BuildContext context) { Future.delayed(Duration(seconds: 3), () { scalaJumpToHomePage(context); }); // if (timer == null) { // int minDuration = 3; // timer = Timer.periodic(Duration(seconds: 5), (t) { // minDuration--; // if (isLoaded && minDuration <= 0) { // timer.cancel(); // scalaJumpToHomePage(context); // } // }); // } } /// 跳转到Home Page void scalaJumpToHomePage(BuildContext context) { print("---------go mail page---------"); Navigator.of(context).pushReplacement(PageRouteBuilder( transitionDuration: Duration(milliseconds: 600), pageBuilder: (context, animation, secondaryAnimation) => // FadeTransition(opacity: animation, child: HomePage()))); ScaleTransition(scale: animation, child: HomePage()))); } @override void dispose() { super.dispose(); if (timer != null) { timer!.cancel(); } } } class _LoadingPageView extends StatelessWidget { @override Widget build(BuildContext context) { // SplashPageProvider service = Provider.of(context, listen: false); return ConstrainedBox( constraints: BoxConstraints.expand(), child: Image.asset( "res/welcome.png", fit: BoxFit.fitWidth, ), ); } }