是用颤抖的键刷新小部件的方法

时间:2020-04-14 16:13:09

标签: flutter dart flutter-layout flutter-dependencies dart-pub

这是小部件,我将其用作刷新小部件的功能(通常是具有按下功能的浮动按钮),所以我想在此处使用小部件的键来刷新小部件

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

2 个答案:

答案 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中。