Flutter 在颤振(初始化)中不使用MaterialApp直接使用Navigator类
为了更好地理解导航器的工作原理,最终能够创建高度定制的导航方案,我尝试显式地编写导航器代码,而不是使用MaterialApp引擎盖下的导航器 下面的代码返回一个用于空值错误的Flutter 在颤振(初始化)中不使用MaterialApp直接使用Navigator类,flutter,flutter-navigation,Flutter,Flutter Navigation,为了更好地理解导航器的工作原理,最终能够创建高度定制的导航方案,我尝试显式地编写导航器代码,而不是使用MaterialApp引擎盖下的导航器 下面的代码返回一个用于空值错误的空检查运算符,尽管提供了我知道需要提供的所有字段。当包含注释代码时(随后设置所有可设置的导航器字段),仍然会出现错误消息 import 'package:flutter/material.dart'; void main() { runApp(CustomNavigation()); } class CustomNa
空检查运算符,尽管提供了我知道需要提供的所有字段。当包含注释代码时(随后设置所有可设置的导航器字段),仍然会出现错误消息
import 'package:flutter/material.dart';
void main() {
runApp(CustomNavigation());
}
class CustomNavigation extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Navigator(
initialRoute: '/',
onGenerateRoute: (routeSettings) {
return MaterialPageRoute(
builder: (context) => Container(
color: Colors.red,
));
},
onUnknownRoute: (routeSettings) =>
MaterialPageRoute(builder: (BuildContext context) {
return Container(
color: Colors.green,
);
}),
// key: GlobalKey(),
// onGenerateInitialRoutes: (state, string) => [
// MaterialPageRoute(builder: (BuildContext context) {
// return Container(
// color: Colors.white,
// );
// }),
// ],
// onPopPage: (route, result) => true,
// pages: [
// MaterialPage(
// child: Container(
// color: Colors.purple,
// ))
// ],
// observers: [NavigatorObserver()],
// reportsRouteUpdateToEngine: true,
// restorationScopeId: 'I am a string',
// transitionDelegate: DefaultTransitionDelegate(),
);
}
}
什么空值导致此错误消息?明白了!覆盖窗口小部件(包含导航器管理的路线,以创建导航体验,覆盖中较高的路线绘制在覆盖中较低的路线之后)需要文本方向信息!空值表示呈现覆盖时请求的(上下文)
方向性。添加方向性小部件可解决此问题,如此处的固定代码所示:
import 'package:flutter/material.dart';
void main() {
runApp(CustomNavigation());
}
class CustomNavigation extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Directionality(
textDirection: TextDirection.ltr,
child: Navigator(
onGenerateRoute: (routeSettings) {
return MaterialPageRoute(
builder: (context) => Container(
color: Colors.red,
));
}),
);
}
}
(要将这个空值调试的最小工作示例转换为有用的/自定义导航,请在onGenerateRoute中的
routeSettings.name
上使用switch语句,并编写一个扩展PageRoute的类来代替MaterialPageRoute。)据我所知,Navigator类仍在navigation 2.0中使用(在路由器的引擎盖下或直接)。导航器类中的Pages类和Pages参数是新的(请参阅您链接的文章中的“Pages”部分和)。无论是使用pages参数还是onGenerateRoute,都会出现上面的空值错误。我想我最好尝试使用更熟悉的导航系统来修复它,以减少因误解导航2.0而混淆变量的可能性!