我想在 Flutter 中的应用程序加载时(或者说每次用户打开应用程序时)添加一个弹出窗口。有人能帮我吗?我知道我必须使用 AlertDialog 小部件,但我找不到合适的条件来确定应用程序启动触发器。
非常感谢任何帮助。
最佳答案
您可以使用Shared Preferences
启动应用程序时,从共享首选项中获取值(例如:isFirstLoaded)。如果 isFirstLoaded == true 则显示对话框。
当对话框关闭时,设置 isFirstLoaded = false 并保存到共享首选项。
下面是一个示例(请注意,该示例不会处理点击返回键时的关闭事件)。
将shared_preferences添加到您的pubspec.yaml
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyStatelessApp());
}
class MyStatelessApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Stateless Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: StatelessWidgetDemo(),
);
}
}
class StatelessWidgetDemo extends StatelessWidget {
final keyIsFirstLoaded = 'is_first_loaded';
@override
Widget build(BuildContext context) {
Future.delayed(Duration.zero, () => showDialogIfFirstLoaded(context));
return SafeArea(
child: Scaffold(
appBar: AppBar(
title: Text('Flutter Stateless Demo'),
),
body: Center(
child: Text('Hello'),
)));
}
showDialogIfFirstLoaded(BuildContext context) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool isFirstLoaded = prefs.getBool(keyIsFirstLoaded);
if (isFirstLoaded == null) {
showDialog(
context: context,
builder: (BuildContext context) {
// return object of type Dialog
return AlertDialog(
title: new Text("Title"),
content: new Text("This is one time dialog"),
actions: <Widget>[
// usually buttons at the bottom of the dialog
new FlatButton(
child: new Text("Dismiss"),
onPressed: () {
// Close the dialog
Navigator.of(context).pop();
prefs.setBool(keyIsFirstLoaded, false);
},
),
],
);
},
);
}
}
关于flutter - 如何在 Flutter 中的应用程序启动时显示弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62536438/