Flutter 颤振statfulWidget刷新两次 return MaterialApp( 家:脚手架( 正文:刷新指示器( 键:_globalKey, onRefresh:refresh, child:Sub(), ), ), );

Flutter 颤振statfulWidget刷新两次 return MaterialApp( 家:脚手架( 正文:刷新指示器( 键:_globalKey, onRefresh:refresh, child:Sub(), ), ), );,flutter,Flutter,有简单的刷新指示器和子小部件 类子扩展StatefulWidget{ @凌驾 _子状态createState()=>_SubState(); } 类_子状态扩展状态{ @凌驾 小部件构建(构建上下文){ 打印(‘子’); 返回容器( 颜色:颜色。琥珀色, 子:SingleChildScrollView( 子:列( 儿童:[ 容器( 身高:300, 颜色:颜色,蓝色, ), 容器( 身高:300, 颜色:颜色,红色, ), 容器( 身高:300, 颜色:颜色。绿色, ), ], ), ), );

有简单的刷新指示器和子小部件

类子扩展StatefulWidget{
@凌驾
_子状态createState()=>_SubState();
}
类_子状态扩展状态{
@凌驾
小部件构建(构建上下文){
打印(‘子’);
返回容器(
颜色:颜色。琥珀色,
子:SingleChildScrollView(
子:列(
儿童:[
容器(
身高:300,
颜色:颜色,蓝色,
),
容器(
身高:300,
颜色:颜色,红色,
),
容器(
身高:300,
颜色:颜色。绿色,
),
],
),
),
);
}
}
Sub小部件在构建时打印“Sub” 关键是当我触摸或只是稍微拖动页面(不够调用refreshindicator)子部件时,会重建两次。我不知道为什么,也不知道如何解决。
(无状态widget可以解决这个问题,但我需要使用statefulwidget)

这取决于您想要在不重新构建的情况下实现什么,但我使用的替代方法是用于颤振图。创建一个对象
sub1=Sub(),在
build()
intiState()
之外的某个地方,那么这个小部件将不会再次重建,并且值将是相同的。

如果它只是静态数据,为什么要使用statefulwidget?现在我使用的是streambuilder,所以我需要使用statefulwidget。我看不到initState,但我猜您在其中调用了refresh。您不需要将其与RefreshIndicator一起使用,但我希望页面移动以用于用户界面RefreshIndicator调用refresh by itself我在父窗口小部件的initState()中添加了Sub sub1=Sub(),但结果是相同的。您是否像return MaterialApp(主页:Scaffold(正文:RefreshIndicator))一样在顶级添加了sub1(键:_globalKey,onRefresh:refresh,子项:sub1,),),);