由于需要放入的路由數量,我試圖在不使用 ifs 的情況下實作此代碼。
onGenerateRoute: (settings) {
final args = settings.arguments as returnArguments;
if (settings.name == "/avoid") {
return MaterialPageRoute(
builder: (context) => Avoid(
info: args.info,
url: args.url,
));
}
if (settings.name == "/doit") {
return MaterialPageRoute(
builder: (context) => Doit(
info: args.info,
url: args.url,
));
}
if (settings.name == "/trylater") {
return MaterialPageRoute(
builder: (context) => TryLater(
info: args.info,
url: args.url,
));
這段代碼按我想要的方式作業得很好,這是我試圖解決問題的代碼,但我不斷收到錯誤,我不知道為什么。
onGenerateRoute: (RouteSettings settings) {
final args = settings.arguments as returnArguments;
var routes = <String, WidgetBuilder>{
"/avoid": (ctx) => Avoid(info: args.info, url: args.url),
"doit" : (ctx) => Doit(info: args.info, url: args.url),
"/trylater": (ctx) => Trylater(info: args.info, url: args.url),
};
WidgetBuilder builder = routes[settings.name];
return MaterialPageRoute(builder: (ctx) => builder(ctx));
}
這是我得到的錯誤
uj5u.com熱心網友回復:
發生錯誤是因為routes[settings.name]可以為空,例如,如果key不存在。要解決此問題,您可以檢查您的值是否不為空
WidgetBuilder? builder = routes[settings.name];
if(builder != null){
return MaterialPageRoute(builder: (ctx) => builder(ctx));
} else {
// Handle null case
}
或者你說你的變數不是 null 通過 using !,但然后確保它不是null。
WidgetBuilder builder = routes[settings.name]!;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359630.html
標籤:扑
上一篇:洗掉FlutterPersistentFooterButtons中的邊距
下一篇:導航中的水平滑動選單項顫動?
