是刷新小部件的方法,它是颤动的关键
Posted
技术标签:
【中文标题】是刷新小部件的方法,它是颤动的关键【英文标题】:Is the way to refresh widget with it's key in flutter 【发布时间】:2020-07-27 10:53:39 【问题描述】:这是我使用它作为刷新我的小部件的功能的小部件(它通常是一个具有 onpressed 功能的浮动按钮),所以我想在这里使用我的小部件的键来刷新我的小部件
Widget floatingButton(int index)
if(index == 0)
return FloatingActionButton(
backgroundColor: Color.fromRGBO(29, 142, 41,1),
disabledElevation: 12,
child: Icon(Icons.refresh),
onPressed: ()
prefix0.Dashboard k = new prefix0.Dashboard();
k.createState().reassemble();
);
else return null;
这是我想要刷新的小部件,它的键 "refresh" 在未来的构建器中
FutureBuilder(
key: refrKey,
future: model.tData(),
builder: (context, snapshot)
if (snapshot.connectionState == ConnectionState.done)
if (snapshot.data == null)
return Center(
child: Column(children: [
SizedBox(
height: MediaQuery.of(context).size.height / 6,),
Text('no data')
]));
else ...
【问题讨论】:
【参考方案1】:setState()
方法将启动重新渲染状态实际所属的 UI 小部件。 setState()
方法不会像@Omi 所说的那样启动重新渲染整个 UI。可以参考Adding interactivity to your app的官方文章。如果您已正确管理状态,它应该会在调用 setState()
时自动反映在 UI 中。
【讨论】:
nop,setstate() 反应不佳,因为我打算检查下面的解决方案是否适合我【参考方案2】:我已经得到了答案; `
onPressed: ()
Navigator.push( context, new MaterialPageRoute(
builder: (context) => this.build(context)));
,
` 而不是使用 setState() 这不是我想要的,我通过再次调用自身来重建整个小部件并使其刷新
【讨论】:
我看到您正在将页面推送到导航器堆栈上,因此一旦您点击后退按钮或弹出屏幕,您将返回到同一页面,因为堆栈上有两个页面副本.如果这对您有帮助,那么使用 pushReplacement 应该可以工作 是的@ShubhamGupta,非常感谢,不需要在堆栈中有副本以上是关于是刷新小部件的方法,它是颤动的关键的主要内容,如果未能解决你的问题,请参考以下文章