在flutter中将参数从一个类传递到另一个类

Los*_*xan 1 dart flutter

我需要将字符串从一个类传递到另一个类,但出现错误。

这是我想要从中传递参数的类的代码:

onTap: () {
                                String titleCompanyId =  snapshot.data?.docs[index].id;
                                Navigator.of(context).push(
                                  MaterialPageRoute(
                                    builder: (context) =>
                                        const TitleCompanyScreen(false, snapshot.data?.docs[index].id),
                                  ),
                                );
                              },
Run Code Online (Sandbox Code Playgroud)

错误出现在我传递的第二个参数上(snapshot.data?.docs[index].id),这是错误:

无效的常量值。

该参数是来自 Cloud Firestore 的文档 ID。

这是我接收参数的代码:

class TitleCompanyScreen extends ConsumerStatefulWidget {

  const TitleCompanyScreen([
    this.isNewTitleCompany,
    this.titleCompanyId,
    Key? key,
  ]) : super(key: key);

  final bool? isNewTitleCompany;
  final String? titleCompanyId;

  @override
  ConsumerState<TitleCompanyScreen> createState() => _TitleCompanyScreenState();
}
Run Code Online (Sandbox Code Playgroud)

我如何传递这个参数?谢谢

更新:

这是我在第一个答案之后得到的。

onTap: () {
                                String? titleCompanyId =  snapshot.data?.docs[index].id;
                                
                                Navigator.of(context).push(
                                  MaterialPageRoute(
                                    builder: (context) =>
                                        const TitleCompanyScreen(false, titleCompanyId),
                                  ),
                                );
                              },
Run Code Online (Sandbox Code Playgroud)

现在,我在 titleCompanyId 参数上收到此错误:

Arguments of a constant creation must be constant expressions.
Try making the argument a valid constant, or use 'new' to call the constructor.
Run Code Online (Sandbox Code Playgroud)

gre*_*tal 6

您应该const从 中删除关键字MaterialPageRoute并直接传递参数,而不是将它们包装在常量构造函数中。

onTap: () {
  String titleCompanyId = snapshot.data?.docs[index].id;
  Navigator.of(context).push(
    MaterialPageRoute(
      builder: (context) => TitleCompanyScreen(false, titleCompanyId),
    ),
  );
},
Run Code Online (Sandbox Code Playgroud)