Flutter: событие с параметрами при использовании BLOC
Зачастую нужно вызвать не просто событие, но и передать ему параметры. Делается это примерно так:
event.dart
| 1 2 3 4 5 6 7 8 9 10 11 | abstract class MyStaticEvent {} class InitEvent extends MyStaticEvent {} class StartUpdateList extends MyStaticEvent {} // Запущен процесс обновления списка статистики class UpdateList extends MyStaticEvent {} // Обновить список статистики пользователя class UpdateListFull extends MyStaticEvent {   final DateTime startDate;   final DateTime endDate;   final int car;   UpdateListFull(this.startDate,this.endDate,this.car); } // Обновить список статистики пользователя | 
В нужном месте дернем вызов UpdateListFull:
| 1 2 3 4 5 6 7 8 9 10 11 12 |             actions: [               IconButton(                 icon: SvgPicture.asset('lib/images/galka.svg'),                 onPressed: () {                   print("Нажманули сохранение");                   BlocProvider.of<MyStaticBloc>(context).add(StartUpdateList());                   BlocProvider.of<MyStaticBloc>(context).add(UpdateListFull(startDate??DateTime.now(),endDate??DateTime.now(),globals.UserInfo["default_car"]));                   Navigator.pop(context);                 },               ),             ], | 
Ну и сам bloc.dart:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |     on<UpdateListFull>((event, emit) async {       print("FullList: $event");       MyStaticState res = MyStaticState();       print("--обновляем список статистики ");       TRequests req = new TRequests();       http.Response response;       await Future.delayed(Duration(seconds: 2), () async {         try {           response=await req.asyncRequest("rfqwrferf", jsonEncode({                        "offset" : globals.time_offset.toString(),             "dtfrom" : globals.HumanDateFormat2(event.startDate),             "dtto"   : globals.HumanDateFormat2(event.endDate),             "autoes" : "[${event.car.toString()}]"           }));           if (response.statusCode==200) {             Map<String, dynamic> answer = jsonDecode(response.body);             if (answer["error"]==true){               EasyLoading.showToast(answer["errortxt"]);             } else {               res.StaticList = answer["result"];               res.loading=true;               print("--пришел список статистики заправки автомобилей: ${res.StaticList}");             }           } else {             EasyLoading.showToast("Ошибка обращения к API");           }           emit(res);         } catch (e) {           EasyLoading.showToast("Ошибка обращения к API $e");         };         emit(res);       });     }); | 



