【发布时间】:2021-08-18 00:26:40
【问题描述】:
Android Studio 在 Flutter 中的 split 上引发以下 NullSafety 错误。
The method 'split' can't be unconditionally invoked because the receiver can be 'null'. Try making the call conditional (using '?.') or adding a null check to the target ('!'). Open documentation
但是建议的修复都不起作用。这是代码;
FutureBuilder(
future: jwtOrEmpty,
builder: (context, snapshot) {
if(!snapshot.hasData) return CircularProgressIndicator();
if(snapshot.data != "") {
var str = snapshot.data;
var jwt = str.split(".");
if(jwt.length !=3) {
return LoginPage();
} else {
var payload = json.decode(ascii.decode(base64.decode(base64.normalize(jwt[1]))));
if(DateTime.fromMillisecondsSinceEpoch(payload["exp"]*1000).isAfter(DateTime.now())) {
return HomePage(str, payload);
} else {
return LoginPage();
}
}
} else {
return LoginPage();
}
}
),
我猜这是因为返回的snapshot.data 不能为空。但我不确定我能做些什么。我尝试添加“!”和 ”?”到snapshot.data、str、jwt 和split,但没有任何效果。
【问题讨论】:
-
str?.split(".")或str?.split?.call(".")应该可以工作,或者str!.split(".")如果你确定它不为空
标签: flutter dart dart-null-safety