implemented new loadable state concept

This commit is contained in:
2024-05-05 22:58:40 +02:00
parent f58a2ec8cd
commit 6ad8203b6a
31 changed files with 1085 additions and 214 deletions

View File

@ -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);
}

View File

@ -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,
}

View File

@ -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;
}

View File

@ -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,
};