main.dart
1 2 3 4 5 6 7 8 9 10
| return MaterialApp( initialRoute: IndexPage.routeName, onGenerateRoute: Routes.generateRoute, builder: (BuildContext context, Widget child) { return Material( child: FlutterEasyLoading( child: child, )); }, );
|
routes.dart
1 2 3 4 5 6 7 8 9 10 11
| class Routes { static Route<dynamic> generateRoute(settings) { switch (settings.name) { case CameraPage.routeName: return MaterialPageRoute( builder: (context) => CameraPage(arguments: settings.arguments)); default: return MaterialPageRoute(builder: (context) => EmptyPage()); } } }
|
camear.dart
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class CameraPage extends StatefulWidget { static const routeName = '/camera';
final CameraPageArguments arguments;
const CameraPage({ Key key, @required this.arguments, }) : super(key: key);
@override _CameraPageState createState() => _CameraPageState(); }
class CameraPageArguments { final String param; CameraPageArguments({ this.param = '测试参数', }); }
|
跳转代码
1 2 3 4
| Navigator.pushNamed(context, CameraPage.routeName, arguments: CameraPageArguments( param: '参数', ));
|
注意
如果需要回传数据
1
| await Navigator.pushNamed(context,CameraPage.routeName)
|
可能报错:
type ‘MaterialPageRoute‘ is not a subtype of type ‘Route‘ in type cast
可以改为使用:
1
| await Navigator.of(context).pushNamed(CameraPage.routeName);
|