飞镖 – 如何在Flutter中创建服务提供商?

飞镖 – 如何在Flutter中创建服务提供商?,第1张

概述假设我需要一个包含所有用户变量和函数的用户服务,以及包含所有项目变量和函数等的另一项服务.我希望所有这些数据和函数在整个项目中可用,将用户数据传递到需要的地方,例如. 我怀疑它与继承的小部件有关,但它是如何工作的?就像,我看到如何在根级别使用一个继承的小部件,但我是否应该在根级别为每个服务构建一堆继承的小部件?或者只是将所有数据放在一个顶级继承的小部件中?似乎可能会变得混乱.我还没有看到这样的例子 假设我需要一个包含所有用户变量和函数的用户服务,以及包含所有项目变量和函数等的另一项服务.我希望所有这些数据和函数在整个项目中可用,将用户数据传递到需要的地方,例如.

我怀疑它与继承的小部件有关,但它是如何工作的?就像,我看到如何在根级别使用一个继承的小部件,但我是否应该在根级别为每个服务构建一堆继承的小部件?或者只是将所有数据放在一个顶级继承的小部件中?似乎可能会变得混乱.我还没有看到这样的例子.

…或者我应该只使用带有静态变量的类并在需要的地方调用它?

解决方法 请参阅上面的Günter提供的链接.如果你有三十分钟观看Brian Egan的DartConf 18演示文稿: Keep it Simple,State.另请参阅Brian的示例代码 @L_@R_419_6941@_1@.他展示了使用带控制器的inheritedWidget和Flutter Redux编写的相同应用程序.

这是一个来自我的简单应用程序的单个inheritedWidget的示例…

class StateContainer extends inheritedWidget {  final List<Membership> memberships;  final IntFunction getNextIndex;  final VoIDMembershipFunction updateMembership;  final VoIDIntFunction deleteMembership;  const StateContainer({    this.memberships,this.getNextIndex,this.updateMembership,this.deleteMembership,Widget child,})      : super(child: child);  static StateContainer of(BuildContext context) {    return context.inheritFromWidgetOfExactType(StateContainer);  }  @overrIDe  bool updateShouldNotify(StateContainer oldWidget) {    return true;  }}

我作为孩子传递了我的MaterialApp.然后树的大部分变为无状态,因为它可以访问StateContainer中的数据和方法.您可以将它们视为您的模型和控制器.树中的构建方法通常以…开头.

@overrIDe  Widget build(BuildContext context) {    final StateContainer container = StateContainer.of(context);

访问它们.

你是对的,一个单一的inheritedWidget很快变得笨拙 – 这是你可能投资探索Redux的地方 – 请参阅谈话的最后10分钟.根据我的经验,最快最简单的区域是updateShouldNotify方法,最后比较所有成员变量. (在这个简单的例子中,只有一个成员变量,并且setState只在变化时被调用,所以它通常都是真的.)

总结

以上是内存溢出为你收集整理的飞镖 – 如何在Flutter中创建服务/提供商?全部内容,希望文章能够帮你解决飞镖 – 如何在Flutter中创建服务/提供商?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1001883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存