flutter - 将弹出范围小部件仅适用于我的项目的最后一个屏幕我想在每个页面或特定页面上使用它
问题描述
我已经为启动屏幕和主屏幕编写了代码,我的自定义启动屏幕在 3 秒后导航到主屏幕我在两个屏幕上都应用了 WillPopScope,但它只适用于启动屏幕。当我禁用启动画面并且只运行主屏幕时,WillPopScope 运行良好,但是当我应用启动画面时,它在主屏幕上不起作用。我想在主屏幕和一个 webview 屏幕上拥有这样的功能,我该如何使用它?
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:splashscreen/splashscreen.dart';
import 'dart:async';
import 'main.dart';
void main() {
runApp(
MaterialApp(
home: splash(),
));
}
class splash extends StatefulWidget {
@override
_splashState createState() => new _splashState();
}
class _splashState extends State<splash> {
void initState() {
super.initState();
Timer(
Duration(seconds: 3),
() => Navigator.push(
context,
MaterialPageRoute(builder: (context) => MyApp()),
));
}
@override
Widget build(BuildContext context) {
Future<bool> _onBackPressed() {
return showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text("Do you want to exit?"),
actions: <Widget>[
FlatButton(
onPressed: () {
Navigator.pop(context, false);
},
child: Text("No")),
FlatButton(
onPressed: () {
Navigator.pop(context, true);
},
child: Text("yes"))
],
));
}
Orientatoin();
return WillPopScope(
child: Scaffold(
body: Stack(
fit: StackFit.expand,
children: <Widget>[
Container(
decoration: BoxDecoration(
color: Colors.transparent,
),
child: Image.asset('imges/splash.png'),
),
],
),
),
onWillPop: _onBackPressed,
);
}
}
void Orientatoin() {
SystemChrome.setPreferredOrientations(
[DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
}
解决方案
在您的代码编辑Navigator
代码中,将 Splash 页面替换为MyApp()
:
Timer(
Duration(seconds: 3),
() => Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => MyApp()),
));
添加WillPopScope
您的MyApp()
推荐阅读
- sql - TERADATA, CASE IN WHERE CLAUSE
- c# - 提供程序“Microsoft.Jet.OLEDB.4.0”未在本地计算机上注册
- reactjs - react-hook-form Controller onBlur 回调未触发验证
- matplotlib - 在 matplotlib 中缩放球面投影
- arrays - 通过 onClick 从数组中删除元素(useState)
- python - np.sort(X,axis=1) 不对数组进行排序?
- php - Laravel:邮件发件人中的foreach
- python - Getting link of latest article in Models
- jenkins - 将jenkins变量传递给管道文件中的Job dsl脚本
- java - 无法运行单元测试用例