функтор принимает?
                  
                  
                  (это должно заработать на flutter/dart)
                  
                  
                  
                  
                  
                  class Event<T> {
                  
                  
                    final List<dynamic> _guards;
                  
                  
                    ActionFunc? _action;
                  
                  
                  
                  
                  
                    Event._(this._guards);
                  
                  
                  
                  
                  
                    factory Event(List<dynamic> guards) => Event._(guards);
                  
                  
                  
                  
                  
                    Event<T> operator /(ActionFunc action) {
                  
                  
                      this._action = action;
                  
                  
                      return this;
                  
                  
                    }
                  
                  
                  
                  
                  
                    bool isValid(T event, dynamic context) {
                  
                  
                      if (_guards.isEmpty) return true;
                  
                  
                  
                  
                  
                      return _guards.every((guard) {
                  
                  
                        try {
                  
                  
                          // First try with one argument.
                  
                  
                          return guard(event);
                  
                  
                        } catch (_) {
                  
                  
                          try {
                  
                  
                            // Then try with two arguments.
                  
                  
                            return guard(event, context);
                  
                  
                          } catch (_) {
                  
                  
                            try {
                  
                  
                        // Another attempt to swap arguments
                  
                  
                              return guard(context, event);
                  
                  
                            } catch (_) {
                  
                  
                              // If all fail, throw an exception.
                  
                  
                              throw Exception('Unsupported guard type');
                  
                  
                            }
                  
                  
                          }
                  
                  
                        }
                  
                  
                      });
                  
                  
                    }
                  
                  
                  }
                  
                  
                  
                  
                  
                  После C++ 20, невозможно нормально писать на dart, как вы тут живёте без интроспекции? Без нормальных шаблонов, без вариадиков?
                  
                  
                
Да вроде прекрасно все живут, интроспекции немного не хватает, приходится заниматься кодогенерацией, а все остальное не нужно
Проекты видимо простые. А что делать в моём примере, брать: https://pub.dev/packages/reflectable ?
Судя по их ридми, в твоём примере оно не подойдёт
Но судя по этому лучше и не сделать, кроме как руками подбирать аргументы
Обсуждают сегодня