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/activity_banner_model.dart'; import '../constant/api_const.dart'; import '../model/activity_model.dart'; class ActivityProvider extends Notifier { @override ActivityData build() { return ActivityData(); } Future fetchActivityBanner() async { var jsonData = await HttpUtil().get( apiBannerList, queryParameters: {"type": "activity"}, ); final newList = ModelParser.parseList( jsonData, ActivityBannerModel.fromJson, ); state = state.copyWith(activityBannerList: newList); } Future fetchActivityList({required int page}) async { var jsonData = await HttpUtil().get( apiActivityList, queryParameters: {"ps": 10, "pn": page}, ); final response = ModelParser.parseObject( jsonData, ActivityModel.fromJson, ); final oldRecords = state.activityList?.records ?? []; state = state.copyWith( activityList: response.copyWith( total: response.total, size: response.size, current: response.current, pages: response.pages, records: page == 1 ? response.records : [...oldRecords, ...?response.records], ), ); } } class ActivityData { final List activityBannerList; //final ActivityModel? activityVideoList; final ActivityModel? activityList; ActivityData({ this.activityBannerList = const [], // this.activityVideoList, this.activityList, }); ActivityData copyWith({ List? activityBannerList, ActivityModel? activityVideoList, ActivityModel? activityList, }) { return ActivityData( activityBannerList: activityBannerList ?? this.activityBannerList, // activityVideoList: activityVideoList ?? this.activityVideoList, activityList: activityList ?? this.activityList, ); } }