Hello i want to send my model class object to next screen previously i do it like this first i declare object in the second screen where i want to naviagte

 class ContactsDetail extends StatelessWidget {
      ContactModel contactDetail;
      ContactsDetail({Key? key, required this.contactDetail}) : super(key: key);
    
    Then in navigator i passed the argument  
    
        onTap: () async {
                
                    Navigator.of(context).push(MaterialPageRoute<void>(builder: (BuildContext context) {
                        return ContactsDetail(
                          contactDetail: contactlist[index],);
                      },
                    ));
                  },`enter code here`

Which works perfectly, Now i am working with name routes and i want to send the whole model of current index data same as i do above but i am unable to do this Now here is my routes .

Route<dynamic> generateRoute(RouteSettings settings){
switch(settings.name)
{
  case LoginScreen.routeName:
  return MaterialPageRoute(builder: (context) => const LoginScreen());
  case TourDetailScreen.routeName:
    return MaterialPageRoute(builder: (context) => TourDetailScreen());

  default:
    return errorRoute();
}
}

And here is the class to which i want to send data

class TourDetailScreen extends StatelessWidget {
  static const routeName = 'tourist_detail_screen';
  TourModel tourDetails;
  TourDetailScreen({Key? key,required this.tourDetails}) : super(key: key);

and this is main 
MaterialApp(
        debugShowCheckedModeBanner: false,

        initialRoute: TouristHomeScreen.routeName,
        onGenerateRoute: (settings) => generateRoute(settings),
      ),

推荐答案

有几种方法可以做到这一点,但下面是我如何将我的自定义模型的对象发送到下一个屏幕

首先,在genrateroute中声明一个变量作为您想要发送的模型

Route<dynamic> generateRoute(RouteSettings settings){
var tourModel = settings.arguments as TourModel;

在用例中,将上述变量作为参数传递

case TourDetailScreen.routeName:
  return MaterialPageRoute(builder: (context) => TourDetailScreen(arguments : tourModel));

从您想要导航的位置,像这样导航

Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context){
          return TourDetailScreen(
            arguments: toursList[index],
          );
        })

最后在您想要导航的屏幕上

TourModel arguments;
TourDetailScreen({Key? key,required this.arguments}) : super(key: key);

并且Use可以在构建中的任何地方使用参数,即 Text(arguments.yourFields)

Flutter相关问答推荐

Flutter ReorderableListView在可滚动父级中无法完美工作

Firebase Auth异常未被catch捕获

在Flutter中,有没有一种方法可以点击页面到后面的页面?

如何在Ffltter Chrome应用程序中使用webview_fltter_web显示自定义html而不是外部uri?

Flutter API请求BadState响应

你能go 掉Flutter 小部件测试中的样板吗?

Flutter 块消费者仅对特定的状态属性更改做出react

为什么我的Flutter 动画过渡没有发生?

使用 forLoops 在 Dart 中进行单元测试会返回 stackoverflow

参数类型void Function()无法分配给参数类型void Function(LongPressEndDetails)?

Flutter:我的应用程序是否需要包含退款购买?

Flutter 包错误:此应用程序使用的是已弃用的 Android 嵌入版本

Flutter中如何实现带有变化图标的浮动操作按钮?

在我使用 flutter_riverpod stateprovider 重新保存代码之前,UI 主题状态不会更新

从所有设备注销,因为用户帐户已从 firebase flutter 中删除

为什么 appBar 小部件在 flutter 中不是常量

如何格式化网址?

在 Flutter 中,您什么时候应该更喜欢Widget继承而不是组合?

有没有办法帮助我修复类型 null 不是 Map 类型的子类型?

设计响应式卡片的最佳方法,以避免像素溢出错误或 _AssertionError