是刷新小部件的方法,它是颤振的关键



这是一个小部件,我用它作为刷新我的小部件的功能(它通常是一个具有非压缩功能的浮动按钮(,所以我想在这里使用小部件的键来刷新小部件

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;
}

这是我的小部件,我想刷新它,在未来的生成器中使用它的键"刷新">

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 { ...

我已经得到了答案;`

onPressed: () { 
Navigator.push(    context, new MaterialPageRoute(
builder: (context) => this.build(context)));
},

`我没有使用setState((,它不能像我想要的那样工作,而是通过再次调用它自己来重建整个小部件,并提高它的刷新率

setState()方法将启动重新渲染状态实际所属的UI小部件。setState()方法不会像@Omi所说的那样启动重新渲染整个UI。你可以参考关于在你的应用程序中添加交互性的官方文章。如果您正确地管理了状态,它应该在setState()调用时自动反映在UI中。

您不刷新小部件。例如,如果要更改按钮上的文本,可以使用字符串变量来保存文本,然后在setState中更改该变量。系统将完成剩下的工作。

最新更新