Мое приложение извлекает информацию из Google Sheet при наличии подключения и сохраняет ее в переменных и обновляет настройки для использования при отсутствии подключения
List<List<String>> popList = new List<List<String>>();
List<List<String>> allList = new List<List<String>>();
Из листов в списки
final popular = await _popularSheet.values.allRows(fromRow: 2);
final all = await _allSheet.values.allRows(fromRow: 2);
popular.forEach((f)=>popList.add(f));
all.forEach((f)=>allList.add(f));
И обновите SharedPreferences
updateSharedPrefs() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('popular', json.encode(popList));
await prefs.setString('all', json.encode(allList));
}
Я пробовал это, но я не могу понять, как правильно преобразовать JSON из SharedPreferences в List<List<String>>
для использования в автономном режиме
SharedPreferences prefs = await SharedPreferences.getInstance();
popularJson = json.decode(await prefs.getString('popular'));
allJson = json.decode(await prefs.getString('all'));
print('no internet');
for(var i in popularJson){
popList.add(i);
}
for(var i in allJson){
allList.add(i);
}
I ' m получаю этот вывод
I/flutter (18739): no internet
E/flutter (18739): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<String>'
E/flutter (18739): #0 main (package:my_app/main.dart:61:19)
E/flutter (18739): <asynchronous suspension>
E/flutter (18739): #1 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:239:25)
E/flutter (18739): #2 _rootRun (dart:async/zone.dart:1126:13)
E/flutter (18739): #3 _CustomZone.run (dart:async/zone.dart:1023:19)
E/flutter (18739): #4 _runZoned (dart:async/zone.dart:1518:10)
E/flutter (18739): #5 runZoned (dart:async/zone.dart:1502:12)
E/flutter (18739): #6 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:231:5)
E/flutter (18739): #7 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307:19)
E/flutter (18739): #8 _RawReceivePortImpl._handleMessage (dart:isolate- patch/isolate_patch.dart:174:12)
Как мне преобразовать JSON Список в список>?
Решено : Это то, что сработало для меня
popList = (popularJson as List).map((el)=>List<String>.from(el)).toList();
allList = (allJson as List).map((el)=>List<String>.from(el)).toList();