我有一个有状态的小部件,可以记录音频。它在两个不同的屏幕上使用。我希望按钮上的文字基于调用它的屏幕。 IE:如果是从一个屏幕调用的文本为“记录”,但是如果是从另一屏幕调用的文本为“尝试”。
因此,我向其传递了一个带有调用它的屏幕名称的参数。然后,我尝试使用带条件的变量。但是该参数不可用,并带有红色下划线。 Android Studio告诉我“只能在初始化程序中访问静态成员”。
那么,如何访问“whichscreen”参数,以便可以在变量/条件中使用它?
这是代码:
class SpeakRecorder extends StatefulWidget {
final String whichscreen;
SpeakRecorder({
this.whichscreen
})
String screenchoice = (whichscreen == "recordscreen") ? "Record" : "Try it";
...这是需要录制按钮文本选择的小部件;
Widget _buildText(RecordingStatus status) {
var text = "";
switch (_currentStatus) {
case RecordingStatus.Initialized:
{
text = screenchoice;
break;
}
case RecordingStatus.Recording:
{
text = 'Pause';
break;
}
case RecordingStatus.Paused:
{
text = 'Resume';
break;
}
default:
break;
}
return Text(text, style: TextStyle(color: Colors.white));
}
我究竟做错了什么?我应该在其他地方声明此变量/条件吗?还是我应该采取更好的方法?
最佳答案
State
和StatefulWidget
是2个不同的类,但是您可以使用 StatefulWidget
从State
中访问相应的State.widget
:
class ExampleWidget extends StatefulWidget{
final String prop;
// ...
}
class ExampleState extends State<ExampleWidget>{
// here you can get the prop of the corresponding widget with widget.prop
Widget build(BuildContext context){
return Text(widget.prop);
}
//...
}
关于flutter - Flutter/Dart:窗口小部件中的文本根据哪个屏幕调用而变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62967554/