首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >页已通过无状态小部件推送时刷新前一页

页已通过无状态小部件推送时刷新前一页
EN

Stack Overflow用户
提问于 2022-10-08 17:05:52
回答 2查看 26关注 0票数 0

这就是问题所在。TabScreen()有3页和一个虚空按钮(无状态小部件)。当按下晶圆盒会给你做一个上传的机会,上传后我想刷新一个页面的画面。

代码语言:javascript
复制
    return Container(
      height: 45.0,
      width: 45.0,
      // ignore: missing_required_param
      child: FabContainer(
        icon: Ionicons.add_outline,
        mini: true,
      ),
    );
  }

工厂集装箱的OnTap:

代码语言:javascript
复制
                  Navigator.pop(context);
                  Navigator.of(context).push(
                    CupertinoPageRoute(
                      builder: (_) => CreatePost(),
                    ),
                  );
                },

无法添加.then(){setState.}因为它是一个无状态的小部件,所以我需要设置精确页面的状态,而不是神话容器的状态。

有什么想法吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-08 17:52:51

在您的updateUi中定义一个TabScreen方法(定义页面)

TabScreen:

代码语言:javascript
复制
void updateUi(){
 // here your logic to change the ui
 // call setState after you made your changes
 setState(() => {});
}

将此函数作为构造函数参数传递到FabContainer按钮

代码语言:javascript
复制
FabContainer(
        icon: Ionicons.add_outline,
        mini: true,
        callback: updateUi,

      ),

在FabContainer类中定义它

代码语言:javascript
复制
final Function() callback;

调用它来更新ui

callback.call();

票数 1
EN

Stack Overflow用户

发布于 2022-10-09 14:45:55

因此,Ozan的建议是一个非常好的开端,但我无法访问有状态的小部件来设置状态。

在奥赞的建议之外,我所做的就是给这个州一个全球化的钥匙:

代码语言:javascript
复制
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();

将其分配给脚手架:

代码语言:javascript
复制
return Scaffold(
      key: scaffoldKey,

使州公共删除_MyPizzasState -> MyPizzasState

创建用于刷新数据的方法:

代码语言:javascript
复制
  refreshData() {
    pizzas = postService.getMyPizzas();
    setState(() {

    });
  }

在创建MyPizzaPage期间分配密钥:

代码语言:javascript
复制
final myPizzasKey = GlobalKey<MyPizzasState>();
{
      'title': 'My Pizza',
      'icon': Ionicons.pizza_sharp,
      'page': MyPizzas(key: myPizzasKey),
      'index': 0,
    },

当我接到电话时,奥赞是怎么说的:

代码语言:javascript
复制
 buildFab() {
    return Container(
      height: 45.0,
      width: 45.0,
      // ignore: missing_required_param
      child: FabContainer(
        icon: Ionicons.add_outline,
        mini: true,
        callback: refreshMyPizzas,
      ),
    );
  }

  void refreshMyPizzas() {
    print("Refreshing");
    myPizzasKey.currentState?.refreshData();
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73998956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档