#list #flutter #boolean #sharedpreferences #favorites
Вопрос:
У меня есть список элементов, которые я хочу, если я нажму на любой из них, его любимый bool равен true, используя общий преф.. более подробно у меня есть список объектов с атрибутом bool favorite. Я хочу сохранить это логическое значение в общей префикс..
Класс Модели:
class ZekrModel {
final String zekrTitle;
final String zekrImage;
final String zekrCat;
final Widget screenWidget;
bool isFav;
bool toggleDone() {
isFav = !isFav;
}
}
Класс поставщика:
class ZekrProvider with ChangeNotifier{
List<ZekrModel> _zekrList = [
ZekrModel(
zekrTitle: 'أذكار المساء',
zekrImage: 'assets/images/sunset.png',
zekrCat: 'Azkar',
screenWidget: AlmasaaScreen(),
),
ZekrModel(
zekrTitle: 'أذكار الصباح',
zekrImage: 'assets/images/sunrise.png',
zekrCat: 'Azkar',
screenWidget: AlsabahScreen(),
)
];
void updateFav(ZekrModel zekrModel) {
zekrModel.toggleDone();
notifyListeners();
}
List<ZekrModel> get favZekr {
return _zekrList.where((element) => element.isFav).toList();
}
}
Использование в пользовательском интерфейсе:
onTap: (){
value.updateFav(zekrIndex);
},
Ответ №1:
Импортируйте пакет:
import 'package:shared_preferences/shared_preferences.dart';
Ваш виджет:
class _LoginState extends State<Login> {
Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
Затем просто вызовите такой вызов внутри любого метода, чтобы установить bool:
final SharedPreferences prefs = await _prefs;
prefs.setBool('logado', true);
prefs.setString('logado_email', people.email);
Если вы хотите получить его позже:
bool status = prefs.getBool('logado') ?? false;
Комментарии:
1. Я знаю синтаксис, но я не знаю, куда мне следует поместить этот блок конкретных! в модели класса, в классе поставщика или в пользовательском интерфейсе?! Можете ли вы показать мне мой код, пожалуйста!?
2. И не забывайте, что этот элемент находится внутри списка объектов
3. Вы должны поместить вне этого метода, в область виджета. Вы объявляете переменную в начале виджета, затем вы можете создать асинхронный метод только для набора переменной bool, потому что доступ к памяти асинхронен