[英]how navigate screen in main page on flutter?
我想在主页上等待 5 秒钟并显示加载动画然后导航到另一个页面。 这是我的代码
import 'mainPage.dart';
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'dart:async';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool isLoading = true;
@override
void initState() {
super.initState();
loadData();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
backgroundColor: Colors.cyan,
body: Builder(
builder: (context) => Center(
child: Container(
child: SpinKitCubeGrid(color: Colors.white, size: 50.0),
),
),
),
),
);
}
Future loadData() async {
return new Timer(Duration(seconds: 5), () {
setState(() {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => MainPage()));
});
});
}
}
但我收到了这个错误:
未处理的异常:使用不包含导航器的上下文请求导航器操作。
我应该怎么办?
也许这会帮助你
static Route route() {
return MaterialPageRoute<void>(builder: (_) => MyApp());
}
onPressed: () => Navigator.of(context).push<void>(MainPage.route()),
................
static Route route() {
return MaterialPageRoute<void>(builder: (_) => MainPage());
}
onPressed: () => Navigator.of(context).push<void>(MyApp.route()),
你可以这样试试吗? 我没有运行代码,而是展示了基本思想。 只需传递上下文并从构建函数中调用它。
class _MyAppState extends State<MyApp> {
bool isLoading = true;
@override
Widget build(BuildContext context) {
loadData(context);
return MaterialApp(
...
);
}
Future loadData(context) async {
...
}
}
用MaterialApp
包装MyApp
,这将为Navigator
提供正确的context
void main() {
runApp(MaterialApp(home: MyApp()));
}
您需要一个context
来使用Navigator
。
要在不使用context
导航,您可以使用名为GetX的包
例子:
在你的 MaterialApp 前添加“Get”,把它变成 GetMaterialApp
GetMaterialApp( // Before: MaterialApp( home: MyHome(), )
导航到新屏幕:
Get.to(NextScreen());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.