这是小部件,我将其用作刷新小部件的功能(通常是具有按下功能的浮动按钮),所以我想在此处使用小部件的键来刷新小部件
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 { ...
答案 0 :(得分:1)
我已经有了答案; `
onPressed: () {
Navigator.push( context, new MaterialPageRoute(
builder: (context) => this.build(context)));
},
` 而不是使用 setState(),它不能按我的意愿工作,而是通过再次调用自身来重新构建整个小部件并希望刷新
答案 1 :(得分:0)
setState()
方法将启动重新渲染状态实际所属的UI小部件。 setState()
方法不会像@Omi所说的那样启动整个UI的重新渲染。您可以参考有关Adding interactivity to your app的官方文章。如果您已正确管理状态,则应在setState()
调用后自动将其反映在UI中。