import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:news_app/http/http_util.dart'; import 'package:news_app/http/model_parser.dart'; import 'package:news_app/model/news_category_model.dart'; import '../constant/api_const.dart'; import 'network_provider.dart'; class NewsCategoryProvider extends Notifier> { bool _hasConnectedOnce = false; @override List build() { // 监听网络变化,在首次联网时触发加载 ref.listen>>(connectivityProvider, ( previous, next, ) { final results = next.asData?.value ?? []; final hasNetwork = results.isNotEmpty && !results.contains(ConnectivityResult.none); if (hasNetwork && !_hasConnectedOnce) { _hasConnectedOnce = true; fetchNewsCategoryList(); } }); return List.empty(); } Future fetchNewsCategoryList() async { final jsonData = await HttpUtil().get(apiNewsCategory); final newsItemList = ModelParser.parseList( jsonData, NewsCategoryModel.fromJson, ); state = newsItemList; } }