【问题标题】:how to navigate data between two screens in flutter?如何在颤动的两个屏幕之间导航数据?
【发布时间】:2021-05-09 12:47:59
【问题描述】:

我有 homeScreen,每隔一个屏幕就会返回它。 并且其中一个屏幕具有来自 TextField 的参数,我在 homeScreen 中需要这些参数,我如何将这些参数导航到主页? 注意:当我使用构造函数时,其他屏幕在导航到主页的行中显示错误,因为没有参数。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您可以在构造函数中使用可选参数:

    Homepage({String textfield});
    

    并在您的主页上使用它(不要忘记此值可以为空)

    或者你需要通过ValueNotifiers使用某种状态管理

    【讨论】:

    • 我试过了,但是当使用 `HomeScreen(nameController.value.text, detailsController.value.text)` 时,它给了我 太多的位置参数:预期为 0,但找到了 2。尝试删除额外的位置参数,或指定命名参数的名称。
    • 您可能忘记在小部件定义中声明参数:gist.github.com/BLKKKBVSIK/89de7eda8387f72d0c6291aff704993b
    • 它给了我一个提示“添加必需的关键字”,很抱歉,但我还是新手,不太了解
    • 我还有不止一个参数,我应该像这样声明它们是可选的吗? " 主页({this.name, this.details})
    • 是的,你可以,这样添加它们,你能提供一个工作的 CodePen 最小的代码示例吗?所以我可以看到确切的错误以及它发生的时间?
    【解决方案2】:

    您可以使用参数传递数据

        class XYZ extends StatelessWidget {
          final TextEditingController textController = TextEditingController();
        
          void navigationFunction() {
    //send the data from XYZ to HomePage
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => HomePage(textValue: textController.text)),
            );
          }
        }
            
        class HomePage extends StatelessWidget {
          const HomePage({this.textValue});
          final String textValue; //use this textValue in HomePage
        
          @override
          Widget build(BuildContext context) {
            return Scaffold();
          }
        }
    

    【讨论】:

      猜你喜欢
      • 2021-11-16
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 2020-10-21
      相关资源
      最近更新 更多