Flutter 颤振';t更新setState上的索引值

Flutter 颤振';t更新setState上的索引值,flutter,dart,setstate,flutter-widget,Flutter,Dart,Setstate,Flutter Widget,我遇到的问题是,尽管我通过setState成功地更新了meter(flattergauge)小部件的值,但小部件本身并没有反映出这种变化。我知道重建正在进行,并且meter小部件上的值确实正在更新 void updateScore(bool isOnTopic){ //出于测试目的,我们不会使用isOnTopic(无论如何,它是硬编码的true) 设置状态(){ 米芯+=15; }); 打印(“分数更新:”); 打印(“----------”+meterScore.toString()+“--

我遇到的问题是,尽管我通过setState成功地更新了meter(flattergauge)小部件的值,但小部件本身并没有反映出这种变化。我知道重建正在进行,并且meter小部件上的值确实正在更新


void updateScore(bool isOnTopic){
//出于测试目的,我们不会使用isOnTopic(无论如何,它是硬编码的true)
设置状态(){
米芯+=15;
});
打印(“分数更新:”);
打印(“----------”+meterScore.toString()+“----------”);
}
@凌驾
小部件构建(构建上下文){
打印('+++我们正在构建!使用此。meterScore值:'+
meterScore.toString()+
'+++++++');
//更换我的FlatterGauge并返回以下行,以隔离问题所在的FlatterGauge小部件
//返回中心(子项:Text(this.meterScore.toString());
颤振仪=新颤振仪(
圆环色,
secondsMarker:secondsMarker.none,
手:手,短,
编号:number.none,
宽度:200,
索引:meterScore,
丰特家族:“伊朗”,
counterStyle:TextStyle(颜色:Colors.black,字体大小:35),
反向对齐:反向对齐.center,
isDecimal:假);
打印(“--------------访问meter.index:”+
meter.index.toString()+
"----------------");
回程表;
}
我相当确定的是,问题在于我如何使用颤振规格包中的颤振规格小部件,因为当我用一个简单的文本小部件替换它,并将我的值提供给它时,它将按照预期更新并反映更新

在这种情况下,这里有一个到颤振测量仪的链接供参考:

我是个新手,这是我的第一个stackoverflow问题,如果我犯了任何明显的错误,请道歉。提前谢谢

以防您可能需要查看我遗漏的重要代码,以下是整个文件:

导入“包装:颤振/材料.省道”;
导入“package:flatter/widgets.dart”;
进口“包装:颤振规/颤振规.省道”;
类Meter扩展StatefulWidget{
米({Key}):超级(Key:Key);
MeterState createState()=>MeterState();
}
类MeterState扩展状态{
@凌驾
initState(){
super.initState();
}
双表芯=75;
颜色表颜色=Colors.green;
void updateMeterColor(){
设置状态(){
meterColor=Colors.green;
});
}
void updateScore(bool isOnTopic){
//出于测试目的,我们不会使用isOnTopic(无论如何,它是硬编码的true)
设置状态(){
米芯+=15;
});
打印(“分数更新:”);
打印(“----------”+meterScore.toString()+“----------”);
}
@凌驾
小部件构建(构建上下文){
打印('+++我们正在构建!使用此。meterScore值:'+
meterScore.toString()+
'+++++++');
//更换我的FlatterGauge并返回以下行,以隔离问题所在的FlatterGauge小部件
//返回中心(子项:Text(this.meterScore.toString());
颤振仪=新颤振仪(
圆环色,
secondsMarker:secondsMarker.none,
手:手,短,
编号:number.none,
宽度:200,
索引:meterScore,
丰特家族:“伊朗”,
counterStyle:TextStyle(颜色:Colors.black,字体大小:35),
反向对齐:反向对齐.center,
isDecimal:假);
打印(“--------------访问meter.index:”+
meter.index.toString()+
"----------------");
回程表;
}
@凌驾
无效处置(){
打印(“-----------我们正在处理(按计划)--”);
super.dispose();
}
}
编辑: 这是热重启和初次访问后的我的终端:

I/flutter (11573): +++++++We're building! Using this.meterScore value: 75.0+++++++
I/flutter (11573): ------------Accessing meter.index: 75.0----------------
I/flutter (11573): 75.0
调用函数一次:

I/flutter (11573): Score Updated:
I/flutter (11573): --------90.0--------
I/flutter (11573): +++++++We're building! Using this.meterScore value: 90.0+++++++
I/flutter (11573): ------------Accessing meter.index: 90.0----------------
我更新了代码片段(从所有meterScore中删除了this,添加了一条注释,用于处理函数未使用的参数)

我可能应该提到updateScore函数是在文件外部调用的。正如我所说,函数本身似乎工作得很好,正如print语句所示

这里是我使用小部件的地方(这是整个文件):

class RecordingPage扩展StatefulWidget{
RecordingPage({Key}):超级(Key:Key);
_RecordingPageState createState();
}
类_RecordingPageState扩展状态{
最终GlobalKey meterState=GlobalKey();
int yes=0;
@凌驾
小部件构建(构建上下文){
返回脚手架(
浮动操作按钮:容器(
宽度:这个。是的*10.0,
孩子:FittedBox(
子:浮动操作按钮(
onPressed:null,
背景颜色:Colors.white,
))),
浮动ActionButtonLocation:浮动ActionButtonLocation.centerFloat,
背景颜色:Colors.white,
appBar:offTopTitle,
正文:专栏(
儿童:[
世界其他地区(儿童:[
扩大(
孩子:扁平按钮(
子项:文本(“转到Websocket”),
颜色:颜色,蓝色,
已按下:(){
pushNamed(上下文,WebsocketRoute);
},
),
),
]),
容器(
高度:MediaQuery.of(context).size.height/4,
子级:Image.asset('assets/placeholderWave.gif'),
),
容器(
页边距:仅限边集(顶部:5),
高度:MediaQuery.of(context).size.height/4,
子项:Meter(键:meterState),
),
记录器(同位旋){
meterState.currentState.updateScore(isOnTopic);
}),
],
),
底部导航栏:AppBarBuilder());
}