我的应用程序中有一个页面,其中包含一些有关如何使用该应用程序的图标和动画。我想在安装后的首次启动时加载此页面,然后希望该应用程序的其他任何启动都直接转到主页。如何才能做到这一点?我看到几个线程使此问题与启动屏幕混淆,我只希望此页面在安装后启动一次,然后再也不会启动。谢谢
您必须创建启动屏幕,并在此页面中检查共享的首选项,该首选项告诉您是否已显示介绍页面如果显示该页面,则可以导航到主页,否则可以导航到简介页面在简介页面中显示您想要显示的内容,以及在简介结束时将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
},)
),
);
}
}