gpt4 book ai didi

flutter - 从子级弹出时,根小部件不会重建

转载 作者:行者123 更新时间:2023-12-04 10:03:31 34 4
gpt4 key购买 nike

我一直在开发一个 Flutter 应用程序,其中用户从 SQLite 数据库中的项目的 ListView 开始一个有状态的小部件。用户可以点击列表中的项目,导航到可以修改和保存项目的页面。

Navigator.pop(context)使用,应用程序返回到 ListView 但不重建。在我强制重建(热重载)之前,所做的更改不会显示

这是 flutter 1.17 的新问题。

根 View

class ItemsView extends StatefulWidget {
@override
_ItemsView State createState() => _ItemsViewState();
}

class _ItemsViewState extends State<ItemsView> {
@override
Widget build(BuildContext context) {
return FutureBuilder<List<Story>>(
future: DBProvider.db.getAllItems(),
builder: (BuildContext context, AsyncSnapshot<List<Story>> snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data[0])
}
}
)
}
}

第二 View
class ModifyView extends StatefulWidget {
@override
_ModifyView State createState() => _ItemsViewState();
}

class _ItemsViewState extends State<ItemsView> {
@override
Widget build(BuildContext context) {
return FutureBuilder<List<Story>>(
future: DBProvider.db.getAllItems(),
builder: (BuildContext context, AsyncSnapshot<List<Story>> snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data[0])
}
}
)
}
}

如何强制小部件重新加载?

最佳答案

您可以使用 Navigator's方法 then 您可以在其上重新加载页面或执行任何其他操作。在下面的示例中,我使用的是屏幕 一个 到屏幕导航和当用户从 导航时乙 一个 ,我们将刷新 View 或执行以下任何其他操作。

From Screen A -> B


Navigator.push(
context,
MaterialPageRoute(
settings: RouteSettings(
name: B), ///// HERE "B" IS THE CLASS NAME
builder: (context) =>
B(),
),
).then((value) {
//// THIS METHOD IS ENVOKE WHEN SCREEN COME FROM B->A, YOU CAN PERFROM CAN TASK HERE
});

屏幕,我们需要创建如下的构造函数
class B extends StatefulWidget {

B () ;

@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _B();
}
}

Navigation from B to A


Navigator.pop(context, 1); //// HERE WE ARE PUSHING THE ANY VALUE "1" FOR THE RETURN IN then OF CLASS "A"

关于flutter - 从子级弹出时,根小部件不会重建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61710396/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com