【问题标题】:How to show a widget throughout app based on condition?如何根据条件在整个应用程序中显示小部件?
【发布时间】:2019-01-17 11:15:03
【问题描述】:

如果没有网络连接,我会显示一个快餐栏。我创建了一个单独的有状态小部件来检查连接并显示栏,但我必须将它添加到所有屏幕中,因此想知道是否有更好的方法以某种方式将它包含在所有屏幕中。

【问题讨论】:

  • 也许在 MaterialApp 子项中使用 Stack 小部件来实现它对你有用。

标签: dart flutter flutter-layout


【解决方案1】:

你的问题不清楚,但我想如果网络不可用,你想显示小吃店,? 要获取连接状态,您可以使用它,

var connectivityResult = await (new Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile ||
    connectivityResult == ConnectivityResult.wifi) {
} else {
  Scaffold(
    appBar: AppBar(
      title: Text('SnackBar Demo'),
    ),
    body: Center(
      child: Text('No  Internet'),
    ), // You'll fill this in below!
  );
}

【讨论】:

  • 我能够做到这一点,现在我想在我的应用程序的所有屏幕上实现它。我想知道一种简单的方法来做到这一点,而不是到处添加它(即使它只是到处调用一个构造函数)。
  • 好的,很酷,那么您必须创建一个全局方法,例如 void _snackbar(BuildContext context){ ... Snackbar... },然后从 didUpdateWidget() 或任何其他方法调用它每个动作都会被调用。在这里你必须传递上下文并检查这个方法内的连接状态。
  • 我有一个 StreamSubscription 并且必须在每次连接更改时设置状态。所以我创建了一个有状态的小部件。无论如何,我的观点是不要从每个屏幕上调用这个小部件。我想知道是否有类似主题的东西,可以在整个应用程序中应用,而无需我从每个屏幕显式调用它。
  • 你找到解决办法了吗?
猜你喜欢
  • 2018-07-01
  • 2012-08-27
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多