【问题标题】:how to pass data to another screen using bloc in flutter如何在颤动中使用 bloc 将数据传递到另一个屏幕
【发布时间】:2020-07-12 17:03:53
【问题描述】:

您好,我是 Flutter 和 bloc 的新手,我想我有 2 个屏幕(登录和主屏幕)。在登录屏幕中,我正在使用发布数据的块,我想在我的主屏幕中调用该数据。有人可以举个例子吗?

【问题讨论】:

  • 欢迎来到 StackOverflow!到目前为止,您尝试过什么吗? StackOverflow 不是免费的代码编写服务,希望您先尝试解决自己的问题。请更新您的问题以显示您已经尝试过的内容,并在minimal, complete, and verifiable example 中显示您面临的具体问题。更多信息,请看how to ask一个好问题,并采取该站点的tour

标签: flutter bloc


【解决方案1】:

有很多方法可以做到这一点,我可以举几个例子。

  1. 您导航到新的 Widget(屏幕)并将您希望它拥有的数据传递给该 Widget 构造函数。

  2. 您可以使用Provider 提供该数据并在其上包装新屏幕,然后导航到新屏幕。

  3. 如果这是一些应该通过应用程序访问的数据,您可以将整个 BLoC 提供给整个应用程序,并在这个新屏幕上获取 BLoC 的引用,然后直接从 BLoC 获取数据。

【讨论】:

  • 你有一些我可以阅读的资源或示例,因为我很难理解一些资源
  • 在 1、2 或 3 上?它们每个都有点不同,但应该很简单,从 1 开始,然后将其传递给构造函数即可。
  • 您能否通过提供资源或示例帮助我解决第 2 和第 3 问题?
  • 尝试阅读 Provider 文档,如果您有不明白的地方,请在 stackoverflow 上提出一个新问题。文档很好,网上有很多示例。
【解决方案2】:

如果你只是想从登录页面向主页传递一个值,你可以这样做:

class Home extends StatelessWidget {
  final String username;

  Home(this.username);

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

class Login extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(onPressed: () {
        Navigator.of(context).push(MaterialPageRoute(builder: (ctx) {
          return Home('flutter');
        }));
      }),
    );
  }
}

【讨论】:

  • 如何在有状态中做到这一点,我尝试通过一些教程使用有状态,但我得到这样的问题(这个类(或这个类继承自的类)被标记为'@immutable ',但它的一个或多个实例字段不是最终的:MainScreen.value)
  • 小部件字段应该被声明为最终的。只改变 State 类中的变量。您可以从在您的州内执行 widget.variableName 的小部件获取变量。
  • 它可以工作,但另一个问题是我有底部选项卡导航器......路线是这样的:在登录屏幕中发布数据后,我将其导航到由底部选项卡导航器组成的文件,其中主菜单是主屏幕。我应该在底部标签导航器文件中添加一些内容吗?
  • 我不明白你的意思,这看起来像是另一个话题,所以你应该用代码示例打开一个新问题,以便我们更好地理解你。另外,为你喜欢的答案投票,如果其中一个回答了你就接受它
猜你喜欢
  • 2019-09-21
  • 2020-02-20
  • 2022-12-15
  • 2021-11-07
  • 2022-01-25
  • 2022-01-12
  • 2023-01-11
  • 2020-07-26
  • 1970-01-01
相关资源
最近更新 更多