我是flutter的初学者,我创建了我的应用程序,但是我想检查用户是否在安装后第一次打开该应用程序,我看过这篇文章但不知道该怎么做?
这是启动屏幕代码,该代码在3秒钟后将用户直接移动到主屏幕,但是我想检查用户是否是第一次打开应用程序并将用户移动到“欢迎”屏幕,还是如果用户不是第一次将用户移动到“主屏幕”。
import 'dart:async'; import 'package:flutter/material.dart'; import 'package:book_pen/main.dart'; import 'package:book_pen/Welcome.dart'; void main() { runApp(new MaterialApp( home: new SplashScreen(), routes: <String, WidgetBuilder>{ '/HomePage': (BuildContext context) => new HomePage(), '/WelcomePage': (BuildContext context) => new WelcomePage() }, )); } class SplashScreen extends StatefulWidget { @override _SplashScreenState createState() => new _SplashScreenState(); } class _SplashScreenState extends State<SplashScreen> { startTime() async { var _duration = new Duration(seconds: 3); return new Timer(_duration, navigationPageHome); } void navigationPageHome() { Navigator.of(context).pushReplacementNamed('/HomePage'); } void navigationPageWel() { Navigator.of(context).pushReplacementNamed('/WelcomePage'); } @override void initState() { super.initState(); startTime(); } @override Widget build(BuildContext context) { Size size = MediaQuery.of(context).size; return Scaffold( body: Stack( children: <Widget>[ Center( child: new Image.asset( 'assets/images/SplashBack.jpg', width: size.width, height: size.height, fit: BoxFit.fill, ), ), Center( child: new Image.asset( 'assets/images/BigPurppleSecSh.png', height: 150, width: 300, )), ], ), ); } }
@Abdullrahman,请shared_preferences按照他人的建议使用。这是你可以做到的
shared_preferences
依赖于shared_preferences包pubspec.yaml并运行Packages get:
pubspec.yaml
Packages get
dependencies: flutter: sdk: flutter shared_preferences: ^0.5.4+6
导入包:
import ‘package:shared_preferences/shared_preferences.dart’;
实现它:
class _SplashScreenState extends State { startTime() async { SharedPreferences prefs = await SharedPreferences.getInstance(); bool firstTime = prefs.getBool(‘first_time’);
var _duration = new Duration(seconds: 3); if (firstTime != null && !firstTime) {// Not first time return new Timer(_duration, navigationPageHome); } else {// First time prefs.setBool('first_time', false); return new Timer(_duration, navigationPageWel); }
}
void navigationPageHome() { Navigator.of(context).pushReplacementNamed(‘/HomePage’); }
void navigationPageWel() {
Navigator.of(context).pushReplacementNamed('/WelcomePage');
} ........
注意: 如果用户清除缓存,则SharedPreferences数据将被删除。SharePreferences是一个本地选项。如果要防止这种情况,可以使用firestore来保存bool值,但是对于这样的简单任务,firestore可能会显得过分杀伤力。
希望这可以帮助。