簡體   English   中英

用戶登錄時使用flutter_native_splash時如何跳過啟動畫面

[英]How to skip the splash screen when use flutter_native_splash while user is logged In

我正在為我的應用程序使用 Flutter。 當我啟動應用程序時,首先出現白屏,然后應用程序啟動。 所以我使用了flutter_native_splash來克服白屏的問題。

但是應用程序的流程第一次可以正常工作,如下所述:

  1. 直接打開啟動畫面。
  2. 重定向到登錄頁面。

但是當用戶使用 email 登錄時,輸入密碼然后關閉應用程序(無需注銷)。 在那之后我想要,當用戶再次打開應用程序時,主頁應該會直接出現。

但是在我的應用程序中,當用戶再次打開應用程序時,會出現第一個初始屏幕,然后重定向到主頁。 所以在這種情況下,所有的東西都在工作,但是為什么每次用戶打開應用程序時都會出現閃屏?

我只想在用戶第一次打開應用程序時出現啟動畫面,或者當用戶通過注銷關閉應用程序時,啟動畫面應該出現,否則啟動畫面應該跳過並且用戶直接重定向到主頁。 當我們使用flutter_native_splash package時如何跳過啟動畫面?

我在pubspec.yaml中的啟動畫面代碼如下:

flutter_native_splash:
  color: "#000000"
  image: assets/images/LOGO.png
  android: true
  ios: true
  android_width: fill
  ios_content_mode: scaleAspectFill

我的main.dart文件:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  SharedPreferences prefs = await SharedPreferences.getInstance();
  var email = prefs.getString('email');
  print(email);
  runApp(MaterialApp(
    debugShowCheckedModeBanner: false,
    home: email == null ? MMSApp() : HomePage(),
    routes: {
      LoginPage.id: (context) => LoginPage(),
      SignupPage.id: (context) => SignupPage(),
      HomePage.id: (context) => HomePage()
    },
    darkTheme: ThemeData(brightness: Brightness.dark),
    themeMode: ThemeMode.dark,
  ));
}

class MMSApp extends StatefulWidget {
  @override
  _MMSAppState createState() => _MMSAppState();
}

class _MMSAppState extends State<MMSApp> {
  @override
  void initState() {
    super.initState();
    //navigateUser();
  }

  Future navigateUser() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    var status = prefs.getBool('isLoggedIn') ?? false;
    print(status);
    if (status) {
      Navigator.pushReplacement(
          context, MaterialPageRoute(builder: (context) => HomePage()));
    } else {
      Navigator.pushReplacement(
          context, MaterialPageRoute(builder: (context) => LoginPage()));
    }
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
        builder: (context, index){
          return Scaffold(
            body: Center(
              child: Text("Welcome", style: TextStyle(fontSize: 25.0, fontWeight: FontWeight.bold,color: Colors.white),),
            ),
          );
        },
        future: navigateUser(),
    );
  }
}

無法跳過由 flutter_native_splash package 設置的啟動畫面。 此初始屏幕在 Flutter 加載應用程序時顯示,並在第一個 Flutter 幀准備好時被刪除。 所有 Flutter 應用程序都有這個初始屏幕。 默認情況下,它是白色的,flutter_native_splash package 允許您對其進行配置,但不能將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM