我的目标是创建一个方法,该方法将使用buildcontext和屏幕引用的参数,并使用提供的详细信息对其进行相应处理。我的部分代码如下。帮助将不胜感激。
我的助手类
import 'package:flutter/material.dart';
class Utils {
static routToPage <T> (BuildContext context, <T> page){
Navigator.of(context).push(MaterialPageRoute(builder: (context) =>page);
}
}
我要访问的班级
import './utils'
import 'package:flutter/material.dart';
class Home extends StatelessWidget {
navigateToPage(){
Utils.rout(BuildContext context, PageTwo())
}
}
目前由于语法错误,我坚持使用自己的方法。
答案 0 :(得分:0)
好吧,我认为不需要创建静态类。这是一个有效的示例。
将以下方法粘贴到dart文件中。
void navigateToScreen(BuildContext context, Widget widget) {
Navigator.of(context).push(MaterialPageRoute(
builder: (_) => widget,
));
}
并使用该类进行导航,例如
navigateToScreen(buildContext, YourNavigationScreen());
答案 1 :(得分:-1)
我更喜欢使用Widget
作为对象参数,而不是<T>
。
您还可以通过使用这样的路线来检查导航到另一页的最简单方法。
在(您的项目)/lib/route/routes.dart中创建路由
import './page/main_page.dart';
import './page/one_page.dart';
import './page/two_page.dart';
final routes = {
'/': (BuildContext context) => MainPage(),
'/pageone': (BuildContext context) => PageOne(),
'/pagetwo': (BuildContext context) => PageTwo(),
}
(您的项目)/lib/main.dart中的主页
import './route/routes.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
SystemChrome.setEnabledSystemUIOverlays([]);
return MaterialApp(
initialRoute: '/', // the default route is MainPage()
routes: routes,
);
}
}
导航到其他页面时,您可以简单地使用以下Navigator.pushNamed
,Navigator.popAndPushNamed
,Navigator.pushNamedAndRemoveUntil
,Navigator.pushReplacementNamed
中的任何一个
// your can simple change the route of your choice by changing the name of route
Navigator.pushNamed(context, '/pageone');
Navigator.popAndPushNamed(context, '/pagetwo');
...