!
在访问具有可选构造函数参数的字段时,我必须使用空检查覆盖。我想知道是否有更好的方法来做到这一点,我还没有意识到。
如果未提供参数,则此可选的、可为空的字段在构造函数主体中分配一个值。
class AuthService {
http.Client? httpClient;
AuthService({this.httpClient}) {
httpClient ??= http.Client();
}
}
稍后使用时httpClient
我需要提供!
,即使它永远不会为空......
http.Response response = await httpClient!.post(createUri,
body: jsonEncode(requestBodyMap));
...否则飞镖分析仪告诉我:
The method post cannot be unconditionally invoked because the receiver can be null
。
当我使用late
关键字时,Lint 检查告诉我“assign-if-null”永远不会发生......
class AuthService {
late http.Client httpClient;
AuthService({this.httpClient}) {
httpClient ??= http.Client(); // ← lint says this is useless & will never run
}
}
...因为httpClient
永远不能为空。
我应该忽略 Lint 吗?
我应该做一些完全不同的事情吗?