仅在安装后加载的说明页面

问题描述 投票:0回答:1

我的应用程序中有一个页面,其中包含一些有关如何使用该应用程序的图标和动画。我想在安装后的首次启动时加载此页面,然后希望该应用程序的其他任何启动都直接转到主页。如何才能做到这一点?我看到几个线程使此问题与启动屏幕混淆,我只希望此页面在安装后启动一次,然后再也不会启动。谢谢

flutter flutter-layout
1个回答
0
投票

您必须创建启动屏幕,并在此页面中检查共享的首选项,该首选项告诉您是否已显示介绍页面如果显示该页面,则可以导航到主页,否则可以导航到简介页面在简介页面中显示您想要显示的内容,以及在简介结束时将isIntroShowed设置为true或基于共享首选项设置为true像下面的代码

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
 return MaterialApp(
   title: 'Flutter Demo',
   theme: ThemeData(
     primarySwatch: Colors.blue,
   ),
   home: SplashScreen(),
 );
}
}

class SplashScreen extends StatefulWidget {
SplashScreen({Key key}) : super(key: key);

@override
_SplashScreenState createState() => _SplashScreenState();
}

class _SplashScreenState extends State<SplashScreen> {
@override
void initState() {
    SharedPreferences.getInstance().then((prefs){
      var isShowed =prefs.getBool("isIntroShowed");
      if(isShowed!=null && isShowed) 
      {
        //navigate to main page
      }
      else{
        //navigate to intro page 
      }
    });

 super.initState();
}
@override
Widget build(BuildContext context) {
 return Scaffold(
   body: Center(child: CircularProgressIndicator(),),
 );
}
}

class IntroPage extends StatelessWidget {
const IntroPage({Key key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
 body: Center(
   child:FlatButton(child: Text('intro done'),onPressed: ()async{
      SharedPreferences prefs = await SharedPreferences.getInstance();
      await prefs.setBool('isIntroShowed', true);
      // navigate to main content
   },)
 ),
);
}
}

© www.soinside.com 2019 - 2024. All rights reserved.