1

我正在尝试实现一个可以调用 SharedPreferences 函数的类。

import 'package:shared_preferences/shared_preferences.dart';


class UserPreferences {
  static SharedPreferences _preferences;

  static const _keyToken = 'token';

  static Future init() async {
    _preferences = await SharedPreferences.getInstance();
  }

  static Future setToken(String token) async =>
    await _preferences.setString(_keyToken, token);

  static String getToken() => _preferences.getString(_keyToken);

}

但我收到以下错误:

The non-nullable variable '_preferences' must be initialized.
Try adding an initializer expression.
4

2 回答 2

0

当您在方法中创建如下变量时,您必须创建一个对象:

  static Future init() async {
    SharedPreferences _preferences = await SharedPreferences.getInstance();
  }

对于使用类似的属性,你可以这样做:

static SharedPreferences _preferences = SharedPreferences.getInstance();

当您调用此属性时,您可以在该页面上使用async/await_preferences属性。

于 2021-07-03T07:34:12.830 回答
0

理解问题

必须初始化不可为空的变量“_preferences”。

有了 NULL 安全性,您就不能再让 Non-Nullable 类型未初始化。

 static SharedPreferences _preferences;

在这里,您还没有初始化 non-nullable SharedPreferences


解决方案

1.初始化

 static Future init() async {
    SharedPreferences _preferences = await SharedPreferences.getInstance() as SharedPreferences;;
  }

2. 使其可空

注意:此解决方案将起作用,但不建议使用,因为您将其设为可空,这意味着它可以保持null(可能导致未来程序流程崩溃)。

添加?使其“NULLABLE”

 static SharedPreferences? _preferences;
于 2021-07-03T08:00:41.713 回答