implemented new loadable state concept
This commit is contained in:
		| @@ -7,8 +7,8 @@ import '../bloc/grade_averages_event.dart'; | ||||
| import '../bloc/grade_averages_state.dart'; | ||||
| import 'grade_averages_list_view.dart'; | ||||
| 
 | ||||
| class GradeAveragesScreen extends StatelessWidget { | ||||
|   const GradeAveragesScreen({super.key}); | ||||
| class GradeAveragesView extends StatelessWidget { | ||||
|   const GradeAveragesView({super.key}); | ||||
| 
 | ||||
|   @override | ||||
|   Widget build(BuildContext context) => BlocProvider<GradeAveragesBloc>( | ||||
| @@ -0,0 +1,17 @@ | ||||
| import '../../../infrastructure/loadableState/loadable_hydrated_bloc.dart'; | ||||
| import '../../../infrastructure/repository/repository.dart'; | ||||
| import '../repository/marianum_message_repository.dart'; | ||||
| import 'marianum_message_state.dart'; | ||||
|  | ||||
| class MarianumMessageBloc extends LoadableHydratedBloc<void, MarianumMessageState> { | ||||
|   MarianumMessageBloc(); | ||||
|  | ||||
|  | ||||
|   @override | ||||
|   MarianumMessageState fromStorage(Map<String, dynamic> json) => MarianumMessageState.fromJson(json); | ||||
|   @override | ||||
|   Map<String, dynamic>? toStorage(MarianumMessageState state) => state.toJson(); | ||||
|  | ||||
|   @override | ||||
|   Repository repository() => MarianumMessageRepository(emit); | ||||
| } | ||||
| @@ -0,0 +1,41 @@ | ||||
| import 'package:freezed_annotation/freezed_annotation.dart'; | ||||
|  | ||||
| part 'marianum_message_state.freezed.dart'; | ||||
| part 'marianum_message_state.g.dart'; | ||||
|  | ||||
|  | ||||
| @freezed | ||||
| class MarianumMessageState with _$MarianumMessageState { | ||||
|   const factory MarianumMessageState({ | ||||
|     required MarianumMessageList messageList, | ||||
|   }) = _MarianumMessageState; | ||||
|  | ||||
|   factory MarianumMessageState.fromJson(Map<String, dynamic> json) => _$MarianumMessageStateFromJson(json); | ||||
| } | ||||
|  | ||||
| @freezed | ||||
| class MarianumMessageList with _$MarianumMessageList { | ||||
|   const factory MarianumMessageList({ | ||||
|     required String base, | ||||
|     required List<MarianumMessage> messages, | ||||
|   }) = _MarianumMessageList; | ||||
|  | ||||
|   factory MarianumMessageList.fromJson(Map<String, dynamic> json) => _$MarianumMessageListFromJson(json); | ||||
| } | ||||
|  | ||||
| @freezed | ||||
| class MarianumMessage with _$MarianumMessage { | ||||
|   const factory MarianumMessage({ | ||||
|     required String name, | ||||
|     required String date, | ||||
|     required String url, | ||||
|   }) = _MarianumMessage; | ||||
|  | ||||
|   factory MarianumMessage.fromJson(Map<String, dynamic> json) => _$MarianumMessageFromJson(json); | ||||
| } | ||||
|  | ||||
|  | ||||
| enum GradeAveragesGradingSystem { | ||||
|   highSchool, | ||||
|   middleSchool, | ||||
| } | ||||
| @@ -0,0 +1,507 @@ | ||||
| // coverage:ignore-file | ||||
| // GENERATED CODE - DO NOT MODIFY BY HAND | ||||
| // ignore_for_file: type=lint | ||||
| // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark | ||||
|  | ||||
| part of 'marianum_message_state.dart'; | ||||
|  | ||||
| // ************************************************************************** | ||||
| // FreezedGenerator | ||||
| // ************************************************************************** | ||||
|  | ||||
| T _$identity<T>(T value) => value; | ||||
|  | ||||
| final _privateConstructorUsedError = UnsupportedError( | ||||
|     'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); | ||||
|  | ||||
| MarianumMessageState _$MarianumMessageStateFromJson(Map<String, dynamic> json) { | ||||
|   return _MarianumMessageState.fromJson(json); | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| mixin _$MarianumMessageState { | ||||
|   MarianumMessageList get messageList => throw _privateConstructorUsedError; | ||||
|  | ||||
|   Map<String, dynamic> toJson() => throw _privateConstructorUsedError; | ||||
|   @JsonKey(ignore: true) | ||||
|   $MarianumMessageStateCopyWith<MarianumMessageState> get copyWith => | ||||
|       throw _privateConstructorUsedError; | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| abstract class $MarianumMessageStateCopyWith<$Res> { | ||||
|   factory $MarianumMessageStateCopyWith(MarianumMessageState value, | ||||
|           $Res Function(MarianumMessageState) then) = | ||||
|       _$MarianumMessageStateCopyWithImpl<$Res, MarianumMessageState>; | ||||
|   @useResult | ||||
|   $Res call({MarianumMessageList messageList}); | ||||
|  | ||||
|   $MarianumMessageListCopyWith<$Res> get messageList; | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| class _$MarianumMessageStateCopyWithImpl<$Res, | ||||
|         $Val extends MarianumMessageState> | ||||
|     implements $MarianumMessageStateCopyWith<$Res> { | ||||
|   _$MarianumMessageStateCopyWithImpl(this._value, this._then); | ||||
|  | ||||
|   // ignore: unused_field | ||||
|   final $Val _value; | ||||
|   // ignore: unused_field | ||||
|   final $Res Function($Val) _then; | ||||
|  | ||||
|   @pragma('vm:prefer-inline') | ||||
|   @override | ||||
|   $Res call({ | ||||
|     Object? messageList = null, | ||||
|   }) { | ||||
|     return _then(_value.copyWith( | ||||
|       messageList: null == messageList | ||||
|           ? _value.messageList | ||||
|           : messageList // ignore: cast_nullable_to_non_nullable | ||||
|               as MarianumMessageList, | ||||
|     ) as $Val); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   @pragma('vm:prefer-inline') | ||||
|   $MarianumMessageListCopyWith<$Res> get messageList { | ||||
|     return $MarianumMessageListCopyWith<$Res>(_value.messageList, (value) { | ||||
|       return _then(_value.copyWith(messageList: value) as $Val); | ||||
|     }); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| abstract class _$$MarianumMessageStateImplCopyWith<$Res> | ||||
|     implements $MarianumMessageStateCopyWith<$Res> { | ||||
|   factory _$$MarianumMessageStateImplCopyWith(_$MarianumMessageStateImpl value, | ||||
|           $Res Function(_$MarianumMessageStateImpl) then) = | ||||
|       __$$MarianumMessageStateImplCopyWithImpl<$Res>; | ||||
|   @override | ||||
|   @useResult | ||||
|   $Res call({MarianumMessageList messageList}); | ||||
|  | ||||
|   @override | ||||
|   $MarianumMessageListCopyWith<$Res> get messageList; | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| class __$$MarianumMessageStateImplCopyWithImpl<$Res> | ||||
|     extends _$MarianumMessageStateCopyWithImpl<$Res, _$MarianumMessageStateImpl> | ||||
|     implements _$$MarianumMessageStateImplCopyWith<$Res> { | ||||
|   __$$MarianumMessageStateImplCopyWithImpl(_$MarianumMessageStateImpl _value, | ||||
|       $Res Function(_$MarianumMessageStateImpl) _then) | ||||
|       : super(_value, _then); | ||||
|  | ||||
|   @pragma('vm:prefer-inline') | ||||
|   @override | ||||
|   $Res call({ | ||||
|     Object? messageList = null, | ||||
|   }) { | ||||
|     return _then(_$MarianumMessageStateImpl( | ||||
|       messageList: null == messageList | ||||
|           ? _value.messageList | ||||
|           : messageList // ignore: cast_nullable_to_non_nullable | ||||
|               as MarianumMessageList, | ||||
|     )); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| @JsonSerializable() | ||||
| class _$MarianumMessageStateImpl implements _MarianumMessageState { | ||||
|   const _$MarianumMessageStateImpl({required this.messageList}); | ||||
|  | ||||
|   factory _$MarianumMessageStateImpl.fromJson(Map<String, dynamic> json) => | ||||
|       _$$MarianumMessageStateImplFromJson(json); | ||||
|  | ||||
|   @override | ||||
|   final MarianumMessageList messageList; | ||||
|  | ||||
|   @override | ||||
|   String toString() { | ||||
|     return 'MarianumMessageState(messageList: $messageList)'; | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   bool operator ==(Object other) { | ||||
|     return identical(this, other) || | ||||
|         (other.runtimeType == runtimeType && | ||||
|             other is _$MarianumMessageStateImpl && | ||||
|             (identical(other.messageList, messageList) || | ||||
|                 other.messageList == messageList)); | ||||
|   } | ||||
|  | ||||
|   @JsonKey(ignore: true) | ||||
|   @override | ||||
|   int get hashCode => Object.hash(runtimeType, messageList); | ||||
|  | ||||
|   @JsonKey(ignore: true) | ||||
|   @override | ||||
|   @pragma('vm:prefer-inline') | ||||
|   _$$MarianumMessageStateImplCopyWith<_$MarianumMessageStateImpl> | ||||
|       get copyWith => | ||||
|           __$$MarianumMessageStateImplCopyWithImpl<_$MarianumMessageStateImpl>( | ||||
|               this, _$identity); | ||||
|  | ||||
|   @override | ||||
|   Map<String, dynamic> toJson() { | ||||
|     return _$$MarianumMessageStateImplToJson( | ||||
|       this, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|  | ||||
| abstract class _MarianumMessageState implements MarianumMessageState { | ||||
|   const factory _MarianumMessageState( | ||||
|           {required final MarianumMessageList messageList}) = | ||||
|       _$MarianumMessageStateImpl; | ||||
|  | ||||
|   factory _MarianumMessageState.fromJson(Map<String, dynamic> json) = | ||||
|       _$MarianumMessageStateImpl.fromJson; | ||||
|  | ||||
|   @override | ||||
|   MarianumMessageList get messageList; | ||||
|   @override | ||||
|   @JsonKey(ignore: true) | ||||
|   _$$MarianumMessageStateImplCopyWith<_$MarianumMessageStateImpl> | ||||
|       get copyWith => throw _privateConstructorUsedError; | ||||
| } | ||||
|  | ||||
| MarianumMessageList _$MarianumMessageListFromJson(Map<String, dynamic> json) { | ||||
|   return _MarianumMessageList.fromJson(json); | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| mixin _$MarianumMessageList { | ||||
|   String get base => throw _privateConstructorUsedError; | ||||
|   List<MarianumMessage> get messages => throw _privateConstructorUsedError; | ||||
|  | ||||
|   Map<String, dynamic> toJson() => throw _privateConstructorUsedError; | ||||
|   @JsonKey(ignore: true) | ||||
|   $MarianumMessageListCopyWith<MarianumMessageList> get copyWith => | ||||
|       throw _privateConstructorUsedError; | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| abstract class $MarianumMessageListCopyWith<$Res> { | ||||
|   factory $MarianumMessageListCopyWith( | ||||
|           MarianumMessageList value, $Res Function(MarianumMessageList) then) = | ||||
|       _$MarianumMessageListCopyWithImpl<$Res, MarianumMessageList>; | ||||
|   @useResult | ||||
|   $Res call({String base, List<MarianumMessage> messages}); | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| class _$MarianumMessageListCopyWithImpl<$Res, $Val extends MarianumMessageList> | ||||
|     implements $MarianumMessageListCopyWith<$Res> { | ||||
|   _$MarianumMessageListCopyWithImpl(this._value, this._then); | ||||
|  | ||||
|   // ignore: unused_field | ||||
|   final $Val _value; | ||||
|   // ignore: unused_field | ||||
|   final $Res Function($Val) _then; | ||||
|  | ||||
|   @pragma('vm:prefer-inline') | ||||
|   @override | ||||
|   $Res call({ | ||||
|     Object? base = null, | ||||
|     Object? messages = null, | ||||
|   }) { | ||||
|     return _then(_value.copyWith( | ||||
|       base: null == base | ||||
|           ? _value.base | ||||
|           : base // ignore: cast_nullable_to_non_nullable | ||||
|               as String, | ||||
|       messages: null == messages | ||||
|           ? _value.messages | ||||
|           : messages // ignore: cast_nullable_to_non_nullable | ||||
|               as List<MarianumMessage>, | ||||
|     ) as $Val); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| abstract class _$$MarianumMessageListImplCopyWith<$Res> | ||||
|     implements $MarianumMessageListCopyWith<$Res> { | ||||
|   factory _$$MarianumMessageListImplCopyWith(_$MarianumMessageListImpl value, | ||||
|           $Res Function(_$MarianumMessageListImpl) then) = | ||||
|       __$$MarianumMessageListImplCopyWithImpl<$Res>; | ||||
|   @override | ||||
|   @useResult | ||||
|   $Res call({String base, List<MarianumMessage> messages}); | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| class __$$MarianumMessageListImplCopyWithImpl<$Res> | ||||
|     extends _$MarianumMessageListCopyWithImpl<$Res, _$MarianumMessageListImpl> | ||||
|     implements _$$MarianumMessageListImplCopyWith<$Res> { | ||||
|   __$$MarianumMessageListImplCopyWithImpl(_$MarianumMessageListImpl _value, | ||||
|       $Res Function(_$MarianumMessageListImpl) _then) | ||||
|       : super(_value, _then); | ||||
|  | ||||
|   @pragma('vm:prefer-inline') | ||||
|   @override | ||||
|   $Res call({ | ||||
|     Object? base = null, | ||||
|     Object? messages = null, | ||||
|   }) { | ||||
|     return _then(_$MarianumMessageListImpl( | ||||
|       base: null == base | ||||
|           ? _value.base | ||||
|           : base // ignore: cast_nullable_to_non_nullable | ||||
|               as String, | ||||
|       messages: null == messages | ||||
|           ? _value._messages | ||||
|           : messages // ignore: cast_nullable_to_non_nullable | ||||
|               as List<MarianumMessage>, | ||||
|     )); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| @JsonSerializable() | ||||
| class _$MarianumMessageListImpl implements _MarianumMessageList { | ||||
|   const _$MarianumMessageListImpl( | ||||
|       {required this.base, required final List<MarianumMessage> messages}) | ||||
|       : _messages = messages; | ||||
|  | ||||
|   factory _$MarianumMessageListImpl.fromJson(Map<String, dynamic> json) => | ||||
|       _$$MarianumMessageListImplFromJson(json); | ||||
|  | ||||
|   @override | ||||
|   final String base; | ||||
|   final List<MarianumMessage> _messages; | ||||
|   @override | ||||
|   List<MarianumMessage> get messages { | ||||
|     if (_messages is EqualUnmodifiableListView) return _messages; | ||||
|     // ignore: implicit_dynamic_type | ||||
|     return EqualUnmodifiableListView(_messages); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   String toString() { | ||||
|     return 'MarianumMessageList(base: $base, messages: $messages)'; | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   bool operator ==(Object other) { | ||||
|     return identical(this, other) || | ||||
|         (other.runtimeType == runtimeType && | ||||
|             other is _$MarianumMessageListImpl && | ||||
|             (identical(other.base, base) || other.base == base) && | ||||
|             const DeepCollectionEquality().equals(other._messages, _messages)); | ||||
|   } | ||||
|  | ||||
|   @JsonKey(ignore: true) | ||||
|   @override | ||||
|   int get hashCode => Object.hash( | ||||
|       runtimeType, base, const DeepCollectionEquality().hash(_messages)); | ||||
|  | ||||
|   @JsonKey(ignore: true) | ||||
|   @override | ||||
|   @pragma('vm:prefer-inline') | ||||
|   _$$MarianumMessageListImplCopyWith<_$MarianumMessageListImpl> get copyWith => | ||||
|       __$$MarianumMessageListImplCopyWithImpl<_$MarianumMessageListImpl>( | ||||
|           this, _$identity); | ||||
|  | ||||
|   @override | ||||
|   Map<String, dynamic> toJson() { | ||||
|     return _$$MarianumMessageListImplToJson( | ||||
|       this, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|  | ||||
| abstract class _MarianumMessageList implements MarianumMessageList { | ||||
|   const factory _MarianumMessageList( | ||||
|           {required final String base, | ||||
|           required final List<MarianumMessage> messages}) = | ||||
|       _$MarianumMessageListImpl; | ||||
|  | ||||
|   factory _MarianumMessageList.fromJson(Map<String, dynamic> json) = | ||||
|       _$MarianumMessageListImpl.fromJson; | ||||
|  | ||||
|   @override | ||||
|   String get base; | ||||
|   @override | ||||
|   List<MarianumMessage> get messages; | ||||
|   @override | ||||
|   @JsonKey(ignore: true) | ||||
|   _$$MarianumMessageListImplCopyWith<_$MarianumMessageListImpl> get copyWith => | ||||
|       throw _privateConstructorUsedError; | ||||
| } | ||||
|  | ||||
| MarianumMessage _$MarianumMessageFromJson(Map<String, dynamic> json) { | ||||
|   return _MarianumMessage.fromJson(json); | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| mixin _$MarianumMessage { | ||||
|   String get name => throw _privateConstructorUsedError; | ||||
|   String get date => throw _privateConstructorUsedError; | ||||
|   String get url => throw _privateConstructorUsedError; | ||||
|  | ||||
|   Map<String, dynamic> toJson() => throw _privateConstructorUsedError; | ||||
|   @JsonKey(ignore: true) | ||||
|   $MarianumMessageCopyWith<MarianumMessage> get copyWith => | ||||
|       throw _privateConstructorUsedError; | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| abstract class $MarianumMessageCopyWith<$Res> { | ||||
|   factory $MarianumMessageCopyWith( | ||||
|           MarianumMessage value, $Res Function(MarianumMessage) then) = | ||||
|       _$MarianumMessageCopyWithImpl<$Res, MarianumMessage>; | ||||
|   @useResult | ||||
|   $Res call({String name, String date, String url}); | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| class _$MarianumMessageCopyWithImpl<$Res, $Val extends MarianumMessage> | ||||
|     implements $MarianumMessageCopyWith<$Res> { | ||||
|   _$MarianumMessageCopyWithImpl(this._value, this._then); | ||||
|  | ||||
|   // ignore: unused_field | ||||
|   final $Val _value; | ||||
|   // ignore: unused_field | ||||
|   final $Res Function($Val) _then; | ||||
|  | ||||
|   @pragma('vm:prefer-inline') | ||||
|   @override | ||||
|   $Res call({ | ||||
|     Object? name = null, | ||||
|     Object? date = null, | ||||
|     Object? url = null, | ||||
|   }) { | ||||
|     return _then(_value.copyWith( | ||||
|       name: null == name | ||||
|           ? _value.name | ||||
|           : name // ignore: cast_nullable_to_non_nullable | ||||
|               as String, | ||||
|       date: null == date | ||||
|           ? _value.date | ||||
|           : date // ignore: cast_nullable_to_non_nullable | ||||
|               as String, | ||||
|       url: null == url | ||||
|           ? _value.url | ||||
|           : url // ignore: cast_nullable_to_non_nullable | ||||
|               as String, | ||||
|     ) as $Val); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| abstract class _$$MarianumMessageImplCopyWith<$Res> | ||||
|     implements $MarianumMessageCopyWith<$Res> { | ||||
|   factory _$$MarianumMessageImplCopyWith(_$MarianumMessageImpl value, | ||||
|           $Res Function(_$MarianumMessageImpl) then) = | ||||
|       __$$MarianumMessageImplCopyWithImpl<$Res>; | ||||
|   @override | ||||
|   @useResult | ||||
|   $Res call({String name, String date, String url}); | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| class __$$MarianumMessageImplCopyWithImpl<$Res> | ||||
|     extends _$MarianumMessageCopyWithImpl<$Res, _$MarianumMessageImpl> | ||||
|     implements _$$MarianumMessageImplCopyWith<$Res> { | ||||
|   __$$MarianumMessageImplCopyWithImpl( | ||||
|       _$MarianumMessageImpl _value, $Res Function(_$MarianumMessageImpl) _then) | ||||
|       : super(_value, _then); | ||||
|  | ||||
|   @pragma('vm:prefer-inline') | ||||
|   @override | ||||
|   $Res call({ | ||||
|     Object? name = null, | ||||
|     Object? date = null, | ||||
|     Object? url = null, | ||||
|   }) { | ||||
|     return _then(_$MarianumMessageImpl( | ||||
|       name: null == name | ||||
|           ? _value.name | ||||
|           : name // ignore: cast_nullable_to_non_nullable | ||||
|               as String, | ||||
|       date: null == date | ||||
|           ? _value.date | ||||
|           : date // ignore: cast_nullable_to_non_nullable | ||||
|               as String, | ||||
|       url: null == url | ||||
|           ? _value.url | ||||
|           : url // ignore: cast_nullable_to_non_nullable | ||||
|               as String, | ||||
|     )); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /// @nodoc | ||||
| @JsonSerializable() | ||||
| class _$MarianumMessageImpl implements _MarianumMessage { | ||||
|   const _$MarianumMessageImpl( | ||||
|       {required this.name, required this.date, required this.url}); | ||||
|  | ||||
|   factory _$MarianumMessageImpl.fromJson(Map<String, dynamic> json) => | ||||
|       _$$MarianumMessageImplFromJson(json); | ||||
|  | ||||
|   @override | ||||
|   final String name; | ||||
|   @override | ||||
|   final String date; | ||||
|   @override | ||||
|   final String url; | ||||
|  | ||||
|   @override | ||||
|   String toString() { | ||||
|     return 'MarianumMessage(name: $name, date: $date, url: $url)'; | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   bool operator ==(Object other) { | ||||
|     return identical(this, other) || | ||||
|         (other.runtimeType == runtimeType && | ||||
|             other is _$MarianumMessageImpl && | ||||
|             (identical(other.name, name) || other.name == name) && | ||||
|             (identical(other.date, date) || other.date == date) && | ||||
|             (identical(other.url, url) || other.url == url)); | ||||
|   } | ||||
|  | ||||
|   @JsonKey(ignore: true) | ||||
|   @override | ||||
|   int get hashCode => Object.hash(runtimeType, name, date, url); | ||||
|  | ||||
|   @JsonKey(ignore: true) | ||||
|   @override | ||||
|   @pragma('vm:prefer-inline') | ||||
|   _$$MarianumMessageImplCopyWith<_$MarianumMessageImpl> get copyWith => | ||||
|       __$$MarianumMessageImplCopyWithImpl<_$MarianumMessageImpl>( | ||||
|           this, _$identity); | ||||
|  | ||||
|   @override | ||||
|   Map<String, dynamic> toJson() { | ||||
|     return _$$MarianumMessageImplToJson( | ||||
|       this, | ||||
|     ); | ||||
|   } | ||||
| } | ||||
|  | ||||
| abstract class _MarianumMessage implements MarianumMessage { | ||||
|   const factory _MarianumMessage( | ||||
|       {required final String name, | ||||
|       required final String date, | ||||
|       required final String url}) = _$MarianumMessageImpl; | ||||
|  | ||||
|   factory _MarianumMessage.fromJson(Map<String, dynamic> json) = | ||||
|       _$MarianumMessageImpl.fromJson; | ||||
|  | ||||
|   @override | ||||
|   String get name; | ||||
|   @override | ||||
|   String get date; | ||||
|   @override | ||||
|   String get url; | ||||
|   @override | ||||
|   @JsonKey(ignore: true) | ||||
|   _$$MarianumMessageImplCopyWith<_$MarianumMessageImpl> get copyWith => | ||||
|       throw _privateConstructorUsedError; | ||||
| } | ||||
| @@ -0,0 +1,52 @@ | ||||
| // GENERATED CODE - DO NOT MODIFY BY HAND | ||||
|  | ||||
| part of 'marianum_message_state.dart'; | ||||
|  | ||||
| // ************************************************************************** | ||||
| // JsonSerializableGenerator | ||||
| // ************************************************************************** | ||||
|  | ||||
| _$MarianumMessageStateImpl _$$MarianumMessageStateImplFromJson( | ||||
|         Map<String, dynamic> json) => | ||||
|     _$MarianumMessageStateImpl( | ||||
|       messageList: MarianumMessageList.fromJson( | ||||
|           json['messageList'] as Map<String, dynamic>), | ||||
|     ); | ||||
|  | ||||
| Map<String, dynamic> _$$MarianumMessageStateImplToJson( | ||||
|         _$MarianumMessageStateImpl instance) => | ||||
|     <String, dynamic>{ | ||||
|       'messageList': instance.messageList, | ||||
|     }; | ||||
|  | ||||
| _$MarianumMessageListImpl _$$MarianumMessageListImplFromJson( | ||||
|         Map<String, dynamic> json) => | ||||
|     _$MarianumMessageListImpl( | ||||
|       base: json['base'] as String, | ||||
|       messages: (json['messages'] as List<dynamic>) | ||||
|           .map((e) => MarianumMessage.fromJson(e as Map<String, dynamic>)) | ||||
|           .toList(), | ||||
|     ); | ||||
|  | ||||
| Map<String, dynamic> _$$MarianumMessageListImplToJson( | ||||
|         _$MarianumMessageListImpl instance) => | ||||
|     <String, dynamic>{ | ||||
|       'base': instance.base, | ||||
|       'messages': instance.messages, | ||||
|     }; | ||||
|  | ||||
| _$MarianumMessageImpl _$$MarianumMessageImplFromJson( | ||||
|         Map<String, dynamic> json) => | ||||
|     _$MarianumMessageImpl( | ||||
|       name: json['name'] as String, | ||||
|       date: json['date'] as String, | ||||
|       url: json['url'] as String, | ||||
|     ); | ||||
|  | ||||
| Map<String, dynamic> _$$MarianumMessageImplToJson( | ||||
|         _$MarianumMessageImpl instance) => | ||||
|     <String, dynamic>{ | ||||
|       'name': instance.name, | ||||
|       'date': instance.date, | ||||
|       'url': instance.url, | ||||
|     }; | ||||
| @@ -0,0 +1,6 @@ | ||||
| import '../../../infrastructure/dataLoader/data_loader.dart'; | ||||
|  | ||||
| class MarianumMessageGetMessages extends DataLoader { | ||||
|   @override | ||||
|   Future fetch() => Future(() => 'Test'); | ||||
| } | ||||
| @@ -0,0 +1,9 @@ | ||||
| import '../../../infrastructure/loadableState/loadable_state.dart'; | ||||
| import '../../../infrastructure/repository/repository.dart'; | ||||
| import '../dataProvider/marianum_message_get_messages.dart'; | ||||
|  | ||||
| class MarianumMessageRepository<TState> extends Repository { | ||||
|   MarianumMessageRepository(void Function(LoadableState<TState> content) emit) : super([ | ||||
|     MarianumMessageGetMessages(), | ||||
|   ]); | ||||
| } | ||||
| @@ -0,0 +1,49 @@ | ||||
| import 'dart:developer'; | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
|  | ||||
| import '../../../../../api/mhsl/message/getMessages/getMessagesResponse.dart'; | ||||
| import '../../../../../view/pages/more/message/messageView.dart'; | ||||
| import '../../../infrastructure/loadableState/loadable_state.dart'; | ||||
| import '../../../infrastructure/loadableState/view/loadable_state_consumer.dart'; | ||||
| import '../../../infrastructure/utilityWidgets/bloc_providing_builder.dart'; | ||||
| import '../bloc/marianum_message_bloc.dart'; | ||||
| import '../bloc/marianum_message_state.dart'; | ||||
|  | ||||
| class MarianumMessageListView extends StatelessWidget { | ||||
|   const MarianumMessageListView({super.key}); | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) => Scaffold( | ||||
|     appBar: AppBar( | ||||
|       title: const Text('Marianum Message'), | ||||
|     ), | ||||
|     body: BlocProvidingBuilder<MarianumMessageBloc, LoadableState<MarianumMessageState>>( | ||||
|       create: (context) => MarianumMessageBloc(), | ||||
|       child: (context, state) { | ||||
|         // if(value.primaryLoading()) return const LoadingSpinner(); | ||||
|         log(state.toString()); | ||||
|         return LoadableStateConsumer<MarianumMessageBloc, LoadableState<MarianumMessageState>, MarianumMessageState>( | ||||
|           child: (state) => ListView.builder( | ||||
|               itemCount: state.messageList.messages.length, | ||||
|               itemBuilder: (context, index) { | ||||
|                 var message = state.messageList.messages.toList()[index]; | ||||
|                 return ListTile( | ||||
|                   leading: const Column( | ||||
|                     mainAxisAlignment: MainAxisAlignment.center, | ||||
|                     children: [Icon(Icons.newspaper)], | ||||
|                   ), | ||||
|                   title: Text(message.name, overflow: TextOverflow.ellipsis), | ||||
|                   subtitle: Text('vom ${message.date}'), | ||||
|                   trailing: const Icon(Icons.arrow_right), | ||||
|                   onTap: () { | ||||
|                     Navigator.push(context, MaterialPageRoute(builder: (context) => MessageView(basePath: state.messageList.base, message: message as GetMessagesResponseObject))); | ||||
|                   }, | ||||
|                 ); | ||||
|               } | ||||
|           ), | ||||
|         ); | ||||
|       } | ||||
|     ), | ||||
|   ); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user