dart - 如何在 Flutter 中获取当前上下文?

标签 dart flutter

我正在使用底部导航栏。在某个事件触发器上,我需要在当前屏幕上显示一些警报。

这就是我实现底部导航栏的方式。我有四个标签。 在这里,当 _isHomeDetected 为真并且当用户单击图标时,我需要更改第 4 个选项卡的图标,即在索引 3 上,无论用户是哪个选项卡,我都必须显示一条警报消息我该怎么做?

class LandingScreen extends StatefulWidget {
  static Widget bottomNavigationBar;
  ..
}

class _LandingScreenState extends State<LandingScreen> {
  ...
  StreamSubscription<String> _subscription;
  bool _isHomeDetected = false;

  @override
  void initState() {
    ...
    _subscription = server.messages.listen(onData, onError: onError);
  }
  onData(message) {
    setState(() {
      _isHomeDetected = json.decode(message)["isHomeBeacon"];
    });
  }
  ...
  @override
  Widget build(BuildContext context) {
    LandingScreen.bottomNavigationBar = new BottomNavigationBar(
        ....
    );
    return new Scaffold(
      body: _currentPage,
      bottomNavigationBar: LandingScreen.bottomNavigationBar,
    );
  }

  _navigateToScreens(int currentIndex) {
    List screens = [
      ..
    ];
    setState((){

      if (!_isHomeDetected || currentIndex != 3){
        _currentPage = screens[currentIndex];
      } else {
        Utils.showCupertinoAlert(
            context: context, content: "You wanna log out???");
      }
    });
  }
}

最佳答案

在任何有状态小部件的构建方法中,您都可以获取构建上下文。如果你不能这样做,以下来自 Flutter 团队的示例使用 GlobalKey<ScaffoldState>有权显示snackBar alert。

https://github.com/flutter/flutter/blob/master/examples/flutter_gallery/lib/demo/cupertino/cupertino_alert_demo.dart

关于dart - 如何在 Flutter 中获取当前上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50246019/

相关文章:

flutter - 如何在 flutter 中获取移动国家代码

rest - 如何使用 HttpClient 类请求多个 URL 而不会丢失 URL 之间的关系

flutter - 在 Flutter testWidgets 小部件测试中运行时,Dart `File.writeAsString` 或 `File.writeAsBytes` 挂起

flutter - 无法检查用户帐户是否存在?

dart - 为什么从其他文件访问时 Flutter GlobalKey 的 currentState 为 NULL

flutter 火焰 : How to calculate the relect of a raycast?

azure - 使用 azure devops 进行 flutter 构建管道

dartEditor 文件层次结构和库/部件逻辑

dart - NestedScrollView 和 CustomScrollView 有什么区别?

java - 谷歌地图尝试创建未注册类型的平台 View