flutter - 'Future<String>' 的实例而不是显示值

标签 flutter dart future

我正在使用 flutter,我正在尝试从我之前设置的 shared_preferences 中获取一个值,并将其显示在文本小部件中。但我得到 Future<String> 的实例而不是值(value)。这是我的代码:

Future<String> getPhone() async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    final String patientPhone = prefs.getString('patientPhone').toString();
        print(patientPhone);

    return patientPhone;
  }

Future<String> phoneOfPatient = getPhone();

Center(child: Text('${phoneOfPatient}'),))

最佳答案

prefs.getString( 之前缺少 await 并使用 setState() 而不是返回值。 build() 不能使用 await

  String _patientPhone;

  Future<void> getPhone() async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    final String patientPhone = await /*added */ prefs.getString('patientPhone');
    print(patientPhone);

    setState(() => _patientPhone = patientPhone);
  }

  build() {
    ...
    Center(child: _patientPhone != null ? Text('${_patientPhone}') : Container(),))
  }

关于flutter - 'Future<String>' 的实例而不是显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54389775/

相关文章:

android - Flutter 中的 BuildConfig(或替代方案)

android - 如何从一个 channel 中获得所有YouTube视频?

mysql - 如何使用 PHP Mysql rest api 创建 Flutter 聊天应用程序?

flutter - TabBar 小部件内的动态标签而不是静态标签

Flutter - 同时请求多个 API 的最佳方式

ios - 为 Flutter App 自定义 BottomNavigationBar selected BottomNavigationBarItem

android - 无法找到Flutter项目的lint-gradle-api-26.1.2.jar

scala - 在 Scala 中不会失败的 future

c++ - 为什么boost::when_all会产生一个新线程

scala - 如何在 Akka Future 中包装 java.util.concurrent.Future?