flutter - Flutter/Dart:窗口小部件中的文本根据哪个屏幕调用而变化?

标签 flutter dart methods static parameter-passing

我有一个有状态的小部件,可以记录音频。它在两个不同的屏幕上使用。我希望按钮上的文字基于调用它的屏幕。 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));
  }
我究竟做错了什么?我应该在其他地方声明此变量/条件吗?还是我应该采取更好的方法?

最佳答案

StateStatefulWidget是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/

相关文章:

flutter - 使用 Hydrated Bloc 版本 5 及更高版本的持久状态

java - 必须在方法中指定返回,但我希望方法再次调用自身而不是返回

Ruby on Rails - 从 app/views/layouts/_menu.rhtml 访问/lib/login_system.rb 中用户定义的库函数

firebase - Firestore映射到StreamBuilder => ListView.Builder

flutter - 通过网络加载 Flutter/Dart 代码

dart - 将 Widget 与 State 分开

java - 该方法创建对象(持久实体)时出错

Flutter:我将如何创建日历插件?

firebase - 如何映射用户特定的喜欢/收藏夹?类似于大多数社交应用程序上的点赞功能

dart - Paper-textarea在AngularDart组件中为只读