【问题标题】:Provider gets out of scope while dragging Widget in ReorderableListView and throws ErrorProvider 在 ReorderableListView 中拖动 Widget 时超出范围并抛出错误
【发布时间】:2021-11-21 07:19:21
【问题描述】:

我正在尝试制作的应用程序包括ReorderableListView。该列表包含使用 Consumer 小部件的项目,并且该小部件的 ChangeNotifierProvider 直接放置在脚手架下方的 MultiProvider 中。

列表项本身是用选项设计的。例如,用户可以选择将列表项设为蓝色、红色或绿色。因此,当我拖动列表项并对其重新排序时,该项目应与用户指定的装饰一起移动。

以下图片有助于可视化用例:


但是,当我尝试重新订购商品时出现以下错误:

错误:在此 Selector Widget 上方找不到正确的 Provider

发生这种情况是因为您使用了不包含提供程序的 BuildContext 您的选择。

所以基本上,我的理解是,当我重新排序列表项时,拖动时可拖动的对象超出范围并且无法找到我的提供程序。 我也尝试将ChangeNotifierProvider 放在我的MaterialApp 小部件的正上方,但这也会产生相同的错误。

重新订购完成后,就没有问题了。我的 ListItem 会自动移动并以适当的设计安顿下来,因此它能够再次找到 Provider。

如果有人知道解决方法,将不胜感激。提前致谢。

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    InheritedProvider<T>.value(value: T,child: YourListItem())

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2018-04-02
    • 2019-04-25
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2014-05-23
    • 2021-08-31
    • 1970-01-01
    • 2016-06-29
    相关资源
    最近更新 更多