wip basics for bloc based state management
This commit is contained in:
@ -0,0 +1,10 @@
|
||||
|
||||
import '../../../infrastructure/controller.dart';
|
||||
import 'grade_averages_state.dart';
|
||||
|
||||
class GradeAveragesController extends Controller<GradeAveragesState> {
|
||||
GradeAveragesController(super.initialState);
|
||||
|
||||
void setGradeType(GradingSchemes scheme) => emit(state.copyWith(gradingScheme: scheme));
|
||||
double average() => state.grades.reduce((a, b) => a + b) / state.grades.length;
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'grade_averages_state.freezed.dart';
|
||||
part 'grade_averages_state.g.dart';
|
||||
|
||||
@freezed
|
||||
class GradeAveragesState with _$GradeAveragesState {
|
||||
const factory GradeAveragesState({
|
||||
required GradingSchemes gradingScheme,
|
||||
required List<int> grades,
|
||||
}) = _GradeAveragesState;
|
||||
|
||||
factory GradeAveragesState.fromJson(Map<String, dynamic> json) => _$GradeAveragesStateFromJson(json);
|
||||
}
|
||||
|
||||
enum GradingSchemes {
|
||||
middleSchool,
|
||||
highSchool,
|
||||
}
|
@ -0,0 +1,179 @@
|
||||
// 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 'grade_averages_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');
|
||||
|
||||
GradeAveragesState _$GradeAveragesStateFromJson(Map<String, dynamic> json) {
|
||||
return _GradeAveragesState.fromJson(json);
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
mixin _$GradeAveragesState {
|
||||
GradingSchemes get gradingScheme => throw _privateConstructorUsedError;
|
||||
List<int> get grades => throw _privateConstructorUsedError;
|
||||
|
||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||
@JsonKey(ignore: true)
|
||||
$GradeAveragesStateCopyWith<GradeAveragesState> get copyWith =>
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class $GradeAveragesStateCopyWith<$Res> {
|
||||
factory $GradeAveragesStateCopyWith(
|
||||
GradeAveragesState value, $Res Function(GradeAveragesState) then) =
|
||||
_$GradeAveragesStateCopyWithImpl<$Res, GradeAveragesState>;
|
||||
@useResult
|
||||
$Res call({GradingSchemes gradingScheme, List<int> grades});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class _$GradeAveragesStateCopyWithImpl<$Res, $Val extends GradeAveragesState>
|
||||
implements $GradeAveragesStateCopyWith<$Res> {
|
||||
_$GradeAveragesStateCopyWithImpl(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? gradingScheme = null,
|
||||
Object? grades = null,
|
||||
}) {
|
||||
return _then(_value.copyWith(
|
||||
gradingScheme: null == gradingScheme
|
||||
? _value.gradingScheme
|
||||
: gradingScheme // ignore: cast_nullable_to_non_nullable
|
||||
as GradingSchemes,
|
||||
grades: null == grades
|
||||
? _value.grades
|
||||
: grades // ignore: cast_nullable_to_non_nullable
|
||||
as List<int>,
|
||||
) as $Val);
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$GradeAveragesStateImplCopyWith<$Res>
|
||||
implements $GradeAveragesStateCopyWith<$Res> {
|
||||
factory _$$GradeAveragesStateImplCopyWith(_$GradeAveragesStateImpl value,
|
||||
$Res Function(_$GradeAveragesStateImpl) then) =
|
||||
__$$GradeAveragesStateImplCopyWithImpl<$Res>;
|
||||
@override
|
||||
@useResult
|
||||
$Res call({GradingSchemes gradingScheme, List<int> grades});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$GradeAveragesStateImplCopyWithImpl<$Res>
|
||||
extends _$GradeAveragesStateCopyWithImpl<$Res, _$GradeAveragesStateImpl>
|
||||
implements _$$GradeAveragesStateImplCopyWith<$Res> {
|
||||
__$$GradeAveragesStateImplCopyWithImpl(_$GradeAveragesStateImpl _value,
|
||||
$Res Function(_$GradeAveragesStateImpl) _then)
|
||||
: super(_value, _then);
|
||||
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? gradingScheme = null,
|
||||
Object? grades = null,
|
||||
}) {
|
||||
return _then(_$GradeAveragesStateImpl(
|
||||
gradingScheme: null == gradingScheme
|
||||
? _value.gradingScheme
|
||||
: gradingScheme // ignore: cast_nullable_to_non_nullable
|
||||
as GradingSchemes,
|
||||
grades: null == grades
|
||||
? _value._grades
|
||||
: grades // ignore: cast_nullable_to_non_nullable
|
||||
as List<int>,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@JsonSerializable()
|
||||
class _$GradeAveragesStateImpl implements _GradeAveragesState {
|
||||
const _$GradeAveragesStateImpl(
|
||||
{required this.gradingScheme, required final List<int> grades})
|
||||
: _grades = grades;
|
||||
|
||||
factory _$GradeAveragesStateImpl.fromJson(Map<String, dynamic> json) =>
|
||||
_$$GradeAveragesStateImplFromJson(json);
|
||||
|
||||
@override
|
||||
final GradingSchemes gradingScheme;
|
||||
final List<int> _grades;
|
||||
@override
|
||||
List<int> get grades {
|
||||
if (_grades is EqualUnmodifiableListView) return _grades;
|
||||
// ignore: implicit_dynamic_type
|
||||
return EqualUnmodifiableListView(_grades);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'GradeAveragesState(gradingScheme: $gradingScheme, grades: $grades)';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$GradeAveragesStateImpl &&
|
||||
(identical(other.gradingScheme, gradingScheme) ||
|
||||
other.gradingScheme == gradingScheme) &&
|
||||
const DeepCollectionEquality().equals(other._grades, _grades));
|
||||
}
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
int get hashCode => Object.hash(
|
||||
runtimeType, gradingScheme, const DeepCollectionEquality().hash(_grades));
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
_$$GradeAveragesStateImplCopyWith<_$GradeAveragesStateImpl> get copyWith =>
|
||||
__$$GradeAveragesStateImplCopyWithImpl<_$GradeAveragesStateImpl>(
|
||||
this, _$identity);
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return _$$GradeAveragesStateImplToJson(
|
||||
this,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
abstract class _GradeAveragesState implements GradeAveragesState {
|
||||
const factory _GradeAveragesState(
|
||||
{required final GradingSchemes gradingScheme,
|
||||
required final List<int> grades}) = _$GradeAveragesStateImpl;
|
||||
|
||||
factory _GradeAveragesState.fromJson(Map<String, dynamic> json) =
|
||||
_$GradeAveragesStateImpl.fromJson;
|
||||
|
||||
@override
|
||||
GradingSchemes get gradingScheme;
|
||||
@override
|
||||
List<int> get grades;
|
||||
@override
|
||||
@JsonKey(ignore: true)
|
||||
_$$GradeAveragesStateImplCopyWith<_$GradeAveragesStateImpl> get copyWith =>
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'grade_averages_state.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
_$GradeAveragesStateImpl _$$GradeAveragesStateImplFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
_$GradeAveragesStateImpl(
|
||||
gradingScheme:
|
||||
$enumDecode(_$GradingSchemesEnumMap, json['gradingScheme']),
|
||||
grades: (json['grades'] as List<dynamic>).map((e) => e as int).toList(),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$$GradeAveragesStateImplToJson(
|
||||
_$GradeAveragesStateImpl instance) =>
|
||||
<String, dynamic>{
|
||||
'gradingScheme': _$GradingSchemesEnumMap[instance.gradingScheme]!,
|
||||
'grades': instance.grades,
|
||||
};
|
||||
|
||||
const _$GradingSchemesEnumMap = {
|
||||
GradingSchemes.middleSchool: 'middleSchool',
|
||||
GradingSchemes.highSchool: 'highSchool',
|
||||
};
|
@ -0,0 +1,24 @@
|
||||
import '../../../infrastructure/controller.dart';
|
||||
import '../../../infrastructure/loadable_state.dart';
|
||||
import 'marianum_message_state.dart';
|
||||
|
||||
class MarianumMessageController extends Controller<LoadableState<MarianumMessageState>> {
|
||||
MarianumMessageController() : super(const LoadableState(loadingState: LoadingState.none, data: MarianumMessageState(test: [])));
|
||||
|
||||
void loading() {
|
||||
emit(state.loading());
|
||||
Future.delayed(const Duration(seconds: 3)).then((value) => emit(state.done(const MarianumMessageState(test: []))));
|
||||
}
|
||||
|
||||
void backgroundLoading() {
|
||||
emit(state.cached(const MarianumMessageState(test: [])));
|
||||
}
|
||||
|
||||
void done() {
|
||||
emit(state.done(const MarianumMessageState(test: [])));
|
||||
}
|
||||
|
||||
void error() {
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'marianum_message_state.freezed.dart';
|
||||
|
||||
@freezed
|
||||
class MarianumMessageState with _$MarianumMessageState {
|
||||
const factory MarianumMessageState({
|
||||
required List<String> test
|
||||
}) = _MarianumMessageState;
|
||||
}
|
@ -0,0 +1,143 @@
|
||||
// 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');
|
||||
|
||||
/// @nodoc
|
||||
mixin _$MarianumMessageState {
|
||||
List<String> get test => 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({List<String> test});
|
||||
}
|
||||
|
||||
/// @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? test = null,
|
||||
}) {
|
||||
return _then(_value.copyWith(
|
||||
test: null == test
|
||||
? _value.test
|
||||
: test // ignore: cast_nullable_to_non_nullable
|
||||
as List<String>,
|
||||
) as $Val);
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$MarianumMessageStateImplCopyWith<$Res>
|
||||
implements $MarianumMessageStateCopyWith<$Res> {
|
||||
factory _$$MarianumMessageStateImplCopyWith(_$MarianumMessageStateImpl value,
|
||||
$Res Function(_$MarianumMessageStateImpl) then) =
|
||||
__$$MarianumMessageStateImplCopyWithImpl<$Res>;
|
||||
@override
|
||||
@useResult
|
||||
$Res call({List<String> test});
|
||||
}
|
||||
|
||||
/// @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? test = null,
|
||||
}) {
|
||||
return _then(_$MarianumMessageStateImpl(
|
||||
test: null == test
|
||||
? _value._test
|
||||
: test // ignore: cast_nullable_to_non_nullable
|
||||
as List<String>,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$MarianumMessageStateImpl implements _MarianumMessageState {
|
||||
const _$MarianumMessageStateImpl({required final List<String> test})
|
||||
: _test = test;
|
||||
|
||||
final List<String> _test;
|
||||
@override
|
||||
List<String> get test {
|
||||
if (_test is EqualUnmodifiableListView) return _test;
|
||||
// ignore: implicit_dynamic_type
|
||||
return EqualUnmodifiableListView(_test);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'MarianumMessageState(test: $test)';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$MarianumMessageStateImpl &&
|
||||
const DeepCollectionEquality().equals(other._test, _test));
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode =>
|
||||
Object.hash(runtimeType, const DeepCollectionEquality().hash(_test));
|
||||
|
||||
@JsonKey(ignore: true)
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
_$$MarianumMessageStateImplCopyWith<_$MarianumMessageStateImpl>
|
||||
get copyWith =>
|
||||
__$$MarianumMessageStateImplCopyWithImpl<_$MarianumMessageStateImpl>(
|
||||
this, _$identity);
|
||||
}
|
||||
|
||||
abstract class _MarianumMessageState implements MarianumMessageState {
|
||||
const factory _MarianumMessageState({required final List<String> test}) =
|
||||
_$MarianumMessageStateImpl;
|
||||
|
||||
@override
|
||||
List<String> get test;
|
||||
@override
|
||||
@JsonKey(ignore: true)
|
||||
_$$MarianumMessageStateImplCopyWith<_$MarianumMessageStateImpl>
|
||||
get copyWith => throw _privateConstructorUsedError;
|
||||
}
|
0
lib/state/app/base/account/account_controller.dart
Normal file
0
lib/state/app/base/account/account_controller.dart
Normal file
Reference in New Issue
Block a user