代码之家  ›  专栏  ›  技术社区  ›  Irfan Ganatra

颤振:如何在导航时知道参数是否传递

  •  1
  • Irfan Ganatra  · 技术社区  · 2 年前

    这是我在颤振导航器中演示参数的基本代码

    单击add时,我没有传递参数

    添加或编辑时,我想浏览同一页

    一些人建议在添加…时传递论点,但这不是解决方案

    我不想在添加时传递任何参数

    这是基本代码

    class ProductPage extends StatelessWidget {
    
      static const routname='productpage';
      @override
      Widget build(BuildContext context) {
        final arg=ModalRoute.of(context)!.settings.arguments as String;
        return Scaffold(
          appBar: AppBar(title: Text('Product management sCreen'),),
          body: Text(arg!=null?'Edit Mode':'Add Mode'),
        );
      }
    }
    
    Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title: Text('HomeScreen'),),
          body: Center(child: Padding(
            padding: const EdgeInsets.all(20.0),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
              TextButton(onPressed: (){
                Navigator.of(context).pushNamed(ProductPage.routname);
              }, child: Text('Add Product')),
              TextButton(onPressed: (){
                Navigator.of(context).pushNamed(ProductPage.routname,arguments: '1');
                }, child: Text('Edit Product')),
    
            ],),
          ),),
        );
      }
    

    显示错误

    “null不是String类型的子类型”

    1 回复  |  直到 2 年前
        1
  •  2
  •   Md. Yeasin Sheikh    2 年前

    ! 使用 ? 接受可为空的数据。如果您确定将获得字符串或null,请使用

     final String? arg=ModalRoute.of(context)?.settings.arguments as String?;
    

    if (arg == null) {
    
    } else {...}