dart Flutter中的SharedPreferences错误

wlp8pajw  于 12个月前  发布在  Flutter
关注(0)|答案(7)|浏览(144)

我在我的Flutter应用程序中使用shared_preferences插件。从某个时刻(可能是Flutter升级后),它开始抛出异常:

E/flutter (27778): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter (27778): type '_InternalLinkedHashMap' is not a subtype of type 'Map<String, Object>' where
E/flutter (27778):   _InternalLinkedHashMap is from dart:collection
E/flutter (27778):   Map is from dart:core
E/flutter (27778):   String is from dart:core
E/flutter (27778):   Object is from dart:core
E/flutter (27778): 
E/flutter (27778): #0      SharedPreferences.getInstance (package:shared_preferences/shared_preferences.dart)
E/flutter (27778): <asynchronous suspension>
E/flutter (27778): #1      loadFirstUse (**path**/lib/main.dart:29:53)
E/flutter (27778): <asynchronous suspension>
E/flutter (27778): #2      main (**path**/lib/main.dart:17:9)
E/flutter (27778): <asynchronous suspension>
E/flutter (27778): #3      _startIsolate.<anonymous closure> (dart:isolate/runtime/libisolate_patch.dart:279:19)
E/flutter (27778): #4      _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:165:12)

字符串
当我简单地尝试创建SharedPreferences的示例时,就会发生这种情况:

SharedPreferences prefs = await SharedPreferences.getInstance();


我试图找到问题的根源,但无法找到它。感谢您的任何帮助。
编辑:我正在使用shared_preferences: "^0.4.0"

ajsxfq5m

ajsxfq5m1#

我使用以下解决方法解决了这个问题:

Future<SharedPreferences> prefs = SharedPreferences.getInstance();
prefs.then(
  (pref)
  {
    //call functions like pref.getInt(), etc. here
  }
);

字符串

kq0g1dla

kq0g1dla2#

要对此进行调试,请使用以下命令:

Future<SharedPreferences> _sprefs = SharedPreferences.getInstance();
_sprefs.then((prefs) {
  // ...
}, 
onError: (error) {
  print("SharedPreferences ERROR = $error");   
});

字符串
在我的例子中,错误是我想在调用runApp()之前调用await SharedPreferences.getInstance(),所以错误消息给我的解决方案是按如下顺序排列我的代码:
第一:

WidgetsFlutterBinding.ensureInitialized();


事后:

SharedPreferences prefs = await SharedPreferences.getInstance();


最后:

runApp(...);

laximzn5

laximzn53#

我已经尝试了shared_preferences: "0.2.4"和上面建议的其他版本没有任何成功。最后得到它的工作后,改变Flutter通道从开发到测试版:

flutter channel beta

字符串
至少这解决了这个问题,现在只是等待一个修复的共享偏好插件在开发频道。

gupuwyp2

gupuwyp24#

我把它改成了shared_preferences: "0.3.3",很有可能它又坏了。

new9mtju

new9mtju5#

你要这样利用Future

Future<SharedPreferences> _sprefs = SharedPreferences.getInstance();

字符串

byqmnocz

byqmnocz6#

我一个一个的删除了软件包,发现是flutter_barcode_scanner引起的,我把它升级到了2.0.0版本,它解决了我的问题。

2vuwiymt

2vuwiymt7#

它之前工作正常,但现在我在调用SharedPreferences.getInstance()时收到无效格式异常;
为了解决这个问题,我尝试了所有的方法,但什么也没有work.so,最后我创建了一个新的项目,并粘贴了我以前所有的代码,这终于解决了这个问题

相关问题