微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在颤动中打开底页时设置状态?

如何解决如何在颤动中打开底页时设置状态?

所以我在尝试显示底部工作表时遇到了问题。

这个想法是我想显示一个底部工作表并在底部工作表显示删除我的底部导航栏。无论如何,我已经创建了一个名为 sheetopen 的布尔值,它最初设置为 false 并且想法是将其设置为 true 以便在工作表弹出时关闭底部导航栏。 在不使用 setstate 的情况下这样做不会反映对 UI 的任何更改。但是,如果我在显示底部表单功能中使用设置状态,应用程序就会崩溃,并且我收到以下消息:“查找停用的小部件的祖先是不安全的。此时小部件的元素树的状态不再稳定。要在其 dispose() 方法中安全地引用小部件的祖先,请通过调用小部件的 didChangeDependencies() 方法中的 DependOnInheritedWidgetofExactType() 来保存对祖先的引用。 我尝试了多种解决方案(Stateful Builder,调用 _controller.setstate ..)但没有任何效果。 卡在这3天了。。 无论如何,我将展示我编写的代码,我非常感谢任何可以提供帮助的人。

  class FeedScreen extends StatefulWidget {
  static bool sheetopen = false;
  static int selectedindex = 0;
  const FeedScreen();
  @override
  _FeedScreenState createState() => _FeedScreenState();
}

class _FeedScreenState extends State<FeedScreen> {
  late final GlobalKey<ScaffoldState> _key;
  late PersistentBottomSheetController _controller;
  void _showPreview(
      final BuildContext context,) {

//this is what's causing the issue
    setState(() {
      FeedScreen.sheetopen = true;
    });

    _controller = _key.currentState!.showBottomSheet(
      (ctx) {
    //etc....
}



    @override
  void initState() {
    super.initState();
    _key = GlobalKey<ScaffoldState>();
  }

    Widget build(BuildContext context) {
    return Scaffold(
    //....
     bottomNavigationBar: FeedScreen.sheetopen
            ? null
            : BottomNavBar(
                FeedScreen.selectedindex,_changeTab,),

解决方法

https://api.flutter.dev/flutter/widgets/StatefulBuilder-class.html

你可以用Bottomsheet包装Stateful builder来使用setState。

,

用 statefulbuilder 包装它

StatefulBuilder(
    builder: (BuildContext context,StateSetter setState) {
       return BottomNavBar(
            FeedScreen.selectedIndex,_changeTab,);}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?