Flutter:MaterialPageRoute 路由“/”的构建器返回 null
Flutter: MaterialPageRoute The builder for route "/" returned null
我刚开始学习 flutter 并决定学习教程。视频说我必须在路由工厂中使用 MaterialPageRoute,并为我的路由声明全局常量,但我收到了这个错误
The following assertion was thrown building Builder(dirty):
The builder for route "/" returned null.
这是我的代码
import 'package:flutter/material.dart';
import 'package:layout_in_flutter/screens/location_detail/location_detail.dart';
import 'screens/locations/locations.dart';
import 'style.dart';
void main() {
runApp(App());
}
const LocationsRoute = '/';
const LocationDetailRoute = '/location_detail';
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
onGenerateRoute: _routes(),
theme: _theme(),
);
}
RouteFactory _routes() {
return (settings) {
final Map<String, dynamic> arguments = settings.arguments;
Widget screen;
switch (settings.name) {
case LocationsRoute:
screen = Locations();
break;
case LocationDetailRoute:
screen = LocationDetail(arguments['id']);
break;
default:
return null;
}
return MaterialPageRoute(builder: (BuildContext context) => screen);
};
}
ThemeData _theme() {
return ThemeData(
appBarTheme: AppBarTheme(
textTheme: TextTheme(
headline6: AppBarTextStyle,
),
),
textTheme: TextTheme(
headline6: Headline6TextStyle,
bodyText2: BodyText2Style,
),
);
}
}
提前致谢
好吧,天哪,我现在好尴尬
问题是因为我将整个代码放在 main.dart 上,当我将整个代码分离到另一个新文件时,它可以工作。谢谢
我刚开始学习 flutter 并决定学习教程。视频说我必须在路由工厂中使用 MaterialPageRoute,并为我的路由声明全局常量,但我收到了这个错误
The following assertion was thrown building Builder(dirty):
The builder for route "/" returned null.
这是我的代码
import 'package:flutter/material.dart';
import 'package:layout_in_flutter/screens/location_detail/location_detail.dart';
import 'screens/locations/locations.dart';
import 'style.dart';
void main() {
runApp(App());
}
const LocationsRoute = '/';
const LocationDetailRoute = '/location_detail';
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
onGenerateRoute: _routes(),
theme: _theme(),
);
}
RouteFactory _routes() {
return (settings) {
final Map<String, dynamic> arguments = settings.arguments;
Widget screen;
switch (settings.name) {
case LocationsRoute:
screen = Locations();
break;
case LocationDetailRoute:
screen = LocationDetail(arguments['id']);
break;
default:
return null;
}
return MaterialPageRoute(builder: (BuildContext context) => screen);
};
}
ThemeData _theme() {
return ThemeData(
appBarTheme: AppBarTheme(
textTheme: TextTheme(
headline6: AppBarTextStyle,
),
),
textTheme: TextTheme(
headline6: Headline6TextStyle,
bodyText2: BodyText2Style,
),
);
}
}
提前致谢
好吧,天哪,我现在好尴尬 问题是因为我将整个代码放在 main.dart 上,当我将整个代码分离到另一个新文件时,它可以工作。谢谢