我目前正在开发一个Android应用程序的Flutter端口,现在想要实现第一个启动页面。它应该只在设备上安装后首次启动应用程序时显示。我想出了如何为Android应用程序做这个,但只有Flutter的基本知识,所以我问这个问题。 有没有人以简单的方式知道如何在Flutter中做到这一点?
提前感谢您的帮助!
答案 0 :(得分:2)
您可以在Dart中创建启动画面,但不建议这样做,因为它会给您的用户带来麻烦(您将使用固定的持续时间),因此,我个人认为我会选择原生启动每个平台上的屏幕。
Android
iOS
我创建了一个帖子,其中包含有关Flutter中的“启动画面”的所有详细信息,您可以看一下:https://medium.com/@diegoveloper/flutter-splash-screen-9f4e05542548
答案 1 :(得分:1)
您可以通过为您的简介/应用程序设置单独的路线来实现此目的:
void main() {
runApp(new MaterialApp(
home: new MyIntroPage(),
routes: <String, WidgetBuilder> {
'/app': (BuildContext context) => new MyAppPage()
},
));
}
在您的介绍页面中,您可以检查用户是否看到它的标记(有关持久数据的一些想法,请参阅here),如果是,请直接导航到应用程序(例如{{3} })
答案 2 :(得分:1)
带有用户输入的首次查看页面,它是示例代码,您可以了解其想法
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:reborn_next_job02/ui/LoginScreen.dart';
import 'package:reborn_next_job02/ui/splashScreen.dart';
import 'package:shared_preferences/shared_preferences.dart';
class Splash extends StatefulWidget {
@override
SplashState createState() => new SplashState();
}
class SplashState extends State<Splash> {
Future checkFirstSeen() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool _seen = (prefs.getBool('seen') ?? false);
if (_seen) {
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (context) => new LoginScreen()));
} else {
prefs.setBool('seen', true);
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (context) => new urlScreen()));
}
}
@override
void initState() {
super.initState();
new Timer(new Duration(seconds: 10), () {
checkFirstSeen();
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
child: new Text('Loading...'),
),
);
}
}
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Hello'),
),
body: new Center(
child: new Text('This is the second page'),
),
);
}
}
class IntroScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
child: new Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
new Text('This is the intro page'),
new MaterialButton(
child: new Text('Gogo Home Page'),
onPressed: () {
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (context) => new Home()));
},
)
],
),
),
);
}
}
答案 3 :(得分:0)
无法帮助您删除后退按钮,但我认为这会帮助您制作启动画面,我开发了程序包 Link
答案 4 :(得分:0)
请找到repo。
如果您想看看Flutter,可以在我们公司的Github页面上找到一些很好的例子。另外,您可以查看我们公司的页面FlutterDevs。