Flutter项目在PC端安卓虚拟机测试时报错。
SDK 版本 0.4.3、0.5.0都存在

currentUser = await LCUser.getCurrent();

报错

出现异常。
NoSuchMethodError (NoSuchMethodError: The getter 'length' was called on null.
Receiver: null
Tried calling: length)

位置:
lc_user.dart 417行

不知道以下信息是否有帮助。一直是登录状态,事发前在测试登出,运行以下代码时,第二行Foo()报错(自己写的本地存储一些数据的函数),没终止运行而是使用了VSCode的重启,又重新运行了两遍以下代码,即重复执行过至少3次LCUser.logout(). 然后就一直是只要执行到LCUser.getCurrent();就报错的情况了。

await LCUser.logout();
await Foo();

感谢反馈,这里确实应该先检测一下 SharedPreferences 是否包含 CurrentUserKey,再反序列化。
但是这里有 catch,所以会执行到 catch 块中,应该不会对程序运行造成影响(请帮忙确认这一点)。
稍后我会完善一下这里处理逻辑。

1 请问如果catch到就当作是未登录状态处理是否正确、安全?
2 我对try catch机制不是很熟,这样写没catch到:

  Future<bool> isLoggedIn() async {
    try {
      currentUser = await LCUser.getCurrent();
    } catch (e) {
      print('${e.toString()}');
      print('${e.message}');
      currentUser = null;
    }
    print('isLoggedIn() gets called, currentUser = $currentUser');
    return currentUser != null;
  }

我的意思是 SDK 已经 catch 了这个异常,理论上你不需要再 catch 就可以得到的 currentUser = null 的

哦~ 所以我catch不到是正常的哈。但是只要没登录,每次运行到这,都会自动断点,很麻烦。

断点是指在 debug 模式下吧?这个和工程配置有关系。
把 Exception Breakings 下的断点删了就行(另外我们也会在下个版本修复这里)