Проблема в decoded.map, я не знаю, почему Flutter игнорирует это.
import 'dart:convert';
import 'package:url_launcher/url_launcher.dart';
import 'package:shared_preferences/shared_preferences.dart';
class HomeController {
String cellphone = '';
String message = '';
String generatedURL = '';
List<PreviousMessage> previousMessages = List<PreviousMessage>();
Future loadPreviousMessages() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String savedString = prefs.getString('history');
List decoded = json.decode(savedString);
decoded.map((e) {previousMessages.add(PreviousMessage(cellphone: e.cellphone, message: e.message));});
print(decoded);
print(previousMessages);
}





.map возвращает новый ленивый Iterable с элементами, которые создаются путем вызова f для каждого элемента этого Iterable в порядке итерации.
поскольку это ленивый Iterable, функция не будет вызываться, если возвращаемый iterable не будет повторен.
например
var x = <int>[1,2,3,4,5,6];
x.map((i)=>print('in map $i'));
Здесь 2-я строка не будет печатать никакого значения, так как мы не перебираем возвращаемое значение из функции .map.
x.map((i)=>print('in map $i')).toList();
Но если мы перебираем возвращаемое значение, переданная функция выполняется, и значения будут напечатаны.
Надеюсь, понятно, почему ваш decoded.map не работает.
Вы можете использовать .forEach для итерации, это должно работать нормально.
посмотрю, спасибо за ответ))
Я думаю, вы ищете метод forEach, а не метод карты, также вам нужно добавить ключевое слово «возврат» внутри карты или forEach, если вы не используете синтаксис «=>». Кроме того, если вам нужна помощь по синтаксису, это язык дартс, а не флаттер, флаттер — это UI-фреймворк, дарт — это язык. ваше здоровье