我正在学习颤动,因此我需要有关我正在经历的怪异行为的帮助/信息。
Future<SharedPreferences> _preferences = SharedPreferences.getInstance();
final SharedPreferences preferences = await _preferences;
if (preferences.getString(USER_TOKEN_PREFERENCE) != '') {
yield AuthentificationStatus.passed;
}
当首选项为空时,应该在if行触发Unhandled异常。但是,在运行调试时,应用程序不会崩溃,并且执行继续到if语句中。 当我在调试控制台中进行评估时,确实会引发异常,但是如果我没有检查过... p
那为什么不停止执行并记录异常呢?
谢谢
答案 0 :(得分:0)
执行没有停止
由于您的状况。如果没有数据,preferences.getString(USER_TOKEN_PREFERENCE)
将返回null
,并且您检查条件中的空字符串。您应该检查
if (preferences.containsKey(USER_TOKEN_PREFERENCE) && preferences.getString(USER_TOKEN_PREFERENCE) != '') {
yield AuthentificationStatus.passed;
}
或
if (preferences.getString(USER_TOKEN_PREFERENCE) != null && preferences.getString(USER_TOKEN_PREFERENCE) != '') {
yield AuthentificationStatus.passed;
}
此article很好地说明了SharedPreferences