0

私はこのようなコードを持っています:

  String? _token;
  DateTime? _expiryDate;
  String? _userId;
  Timer? _authTimer;

  Future<bool> tryAutoLogin() async {
    final prefs = await SharedPreferences.getInstance();
    if (!prefs.containsKey('userData')) {
      return false;
    }
    final extractedUserData =
        json.decode(prefs.getString('userData')) as Map<String, Object>;// FIRST ERROR
    final expiryDate = DateTime.parse(extractedUserData['expiryDate']);// SECOND ERROR

    if (expiryDate.isBefore(DateTime.now())) {
      return false;
    }
    _token = extractedUserData['token']; //THIRD ERROR
    _userId = extractedUserData['userId']; // THIRD ERROR
    _expiryDate = expiryDate;
    notifyListeners();
    _autoLogout();
    return true;
  }

しかし、それは私にこれらのエラーを与えます:

引数の型「文字列?」パラメータ タイプ「文字列」に割り当てることはできません。

引数の型「オブジェクト?」パラメータ タイプ「文字列」に割り当てることはできません。

タイプ「オブジェクト?」の値 'String?' 型の変数に割り当てることはできません。変数の型を変更するか、右側の型を「String?」にキャストしてみてください。

?Flutterチュートリアルからこのコードを見つけ、いくつかの変数タイプの後にまたはマークを追加してエラーを修正しようとしました!が、うまくできなかったようです.

編集:コードのこの行を更新することにより

final extractedUserData = json.decode(prefs.getString('userData')) as Map<String, Object>;

final extractedUserData = json.decode(prefs.getString('userData')) as Map<String, dynamic>;

最初のエラーはまだ存在しますが、他のエラーはなくなりました。私も次のように行を更新しようとしました

final extractedUserData = json.decode(prefs!.getString('userData')) as Map<String, dynamic>;

( に変更prefs)prefs!でもどうにもなりませんでした。修正方法がわかりません。

4

1 に答える 1