私はこのようなコードを持っています:
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!
でもどうにもなりませんでした。修正方法がわかりません。