// ignore_for_file: use_build_context_synchronously import 'package:refilc/api/client.dart'; import 'package:refilc/models/news.dart'; import 'package:refilc/models/settings.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class NewsProvider extends ChangeNotifier { // Private late List _news; //late int _state; late int _fresh; bool show = false; late BuildContext _context; // Public List get news => _news; int get state => _fresh - 1; NewsProvider({ List initialNews = const [], required BuildContext context, }) { _news = List.castFrom(initialNews); _context = context; } Future restore() async { // Load news state from the database var seen_ = Provider.of(_context, listen: false).seenNews; if (seen_.isEmpty) { var news_ = await reFilcAPI.getNews(); if (news_ != null) { _news = news_; show = true; } } //_state = seen_; // Provider.of(_context, listen: false) // .update(seenNewsId: news_.id); } Future fetch() async { var news_ = await reFilcAPI.getNews(); if (news_ == null) return; show = false; _news = news_; for (var news in news_) { if (news.expireDate.isAfter(DateTime.now()) && Provider.of(_context, listen: false) .seenNews .contains(news.id) == false) { show = true; Provider.of(_context, listen: false) .update(seenNewsId: news.id); notifyListeners(); } } // print(news_.length); // print(_state); // _news = news_; // _fresh = news_.length - _state; // if (_fresh < 0) { // _state = news_.length; // Provider.of(_context, listen: false) // .update(newsState: _state); // } // _fresh = max(_fresh, 0); // if (_fresh > 0) { // show = true; // notifyListeners(); // } // print(_fresh); // print(_state); // print(show); } void lock() => show = false; void release() { // if (_fresh == 0) return; // _fresh--; // //_state++; // // Provider.of(_context, listen: false) // // .update(seenNewsId: _state); // if (_fresh > 0) { // show = true; // } else { // show = false; // } // notifyListeners(); } }