【问题标题】:Tabbar with unique actions per tab每个选项卡具有唯一操作的选项卡栏
【发布时间】:2020-04-11 05:12:17
【问题描述】:

我有一个带有两个标签的Tabbar。 Tabbar 有自己的Appbar,两个选项卡都使用它。如何让排序按钮在每个选项卡的有状态小部件中运行自定义(设置状态)功能?或者,每个选项卡是否有可能拥有自己独特的Appbar?我不确定这里有什么最好的方法。

其中一个选项卡内的示例方法:

class _TabAState extends State<TabA> {
  void sort() {
    setState(() {
    myList.sort((a, b) => b.dueDate.compareTo(a.dueDate));
    });
  }

...

排序按钮:

IconButton(
  icon: Icon(Icons.sort),
  onPressed: () => DefaultTabController.of(context).index == 0
      ? TabA.sort() // Does not work
      : TabB.sort(), // Does not work
),

【问题讨论】:

  • 我很难理解您想要实现的目标。您想根据选择的选项卡在持有 TabBar 的父级上有 2 个不同的 AppBar?
  • 两个不同的应用栏只是我认为可能使这成为可能的一种方法。最终,我想运行一个从 appbar 按钮调用的排序函数。但是,排序功能需要在有状态选项卡小部件内运行特定功能。

标签: flutter dart


【解决方案1】:

关于您担心这种方法是否是最佳方法:

来自文档

Scaffold 被设计为 MaterialApp 的单一顶级容器,通常不需要嵌套脚手架。

根据此声明,我建议将多个 Scaffold 嵌套在另一个 Scaffold 中可能不是一个好主意。这与您关心的问题有关,是否将AppBar 嵌套在Scaffold 中,因为每个Scaffold 只能有一个AppBar。

我个人不推荐从 other Flutter Widget 类调用静态或非静态方法(例如,用作应用程序独立屏幕的小部件)用于执行应用程序的业务逻辑。也许,您可以继续使用 ScopedModel 等小部件和 BloC、Redux 或 Mobx 等架构模式来实现应用程序的业务逻辑。

进一步阅读:

【讨论】:

  • 感谢您提供此信息。这是我的第一个移动应用程序,昨天和今天不得不深入研究状态管理选项。我通过使用provider 包并将我的列表存储在一个更全局/可访问的位置,然后使用notifyListeners() 更新以在选项卡中列出。
  • 太棒了。这是件好事。是的,provider 也适合您的情况。
  • 嘿,我也有类似的问题,谁能给意见:stackoverflow.com/questions/62392702/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多