master #81
14
melos.yaml
14
melos.yaml
@ -24,13 +24,17 @@ scripts:
|
|||||||
melos exec -c 1 -- flutter analyze --fatal-infos
|
melos exec -c 1 -- flutter analyze --fatal-infos
|
||||||
description: Run `flutter analyze` for all packages.
|
description: Run `flutter analyze` for all packages.
|
||||||
|
|
||||||
format:
|
fix:
|
||||||
run: melos exec flutter format . --fix
|
run: melos exec dart fix . --apply
|
||||||
description: Run `flutter format` for all packages.
|
description: Run `dart fix` for all packages.
|
||||||
|
|
||||||
|
format:
|
||||||
|
run: melos exec dart format .
|
||||||
|
description: Run `dart format` for all packages.
|
||||||
|
|
||||||
format-check:
|
format-check:
|
||||||
run: melos exec flutter format . --set-exit-if-changed
|
run: melos exec dart fix . --set-exit-if-changed
|
||||||
description: Run `flutter format` checks for all packages.
|
description: Run `dart fix` checks for all packages.
|
||||||
|
|
||||||
clean:deep:
|
clean:deep:
|
||||||
run: git clean -x -d -f -q
|
run: git clean -x -d -f -q
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
import 'package:architecture_example/data/models/photo_model.dart';
|
import 'package:architecture_example/data/models/photo_model.dart';
|
||||||
|
|
||||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||||
|
@ -24,7 +24,6 @@ import 'package:wyatt_architecture/wyatt_architecture.dart';
|
|||||||
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
||||||
|
|
||||||
class PhotoRepositoryImpl extends PhotoRepository {
|
class PhotoRepositoryImpl extends PhotoRepository {
|
||||||
|
|
||||||
PhotoRepositoryImpl(
|
PhotoRepositoryImpl(
|
||||||
this._photoRemoteDataSource,
|
this._photoRemoteDataSource,
|
||||||
this._albumRemoteDataSource,
|
this._albumRemoteDataSource,
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class AddPhotoToFavorites extends AsyncUseCase<Photo, List<Photo>> {
|
class AddPhotoToFavorites extends AsyncUseCase<Photo, List<Photo>> {
|
||||||
|
|
||||||
AddPhotoToFavorites(this._photoRepository);
|
AddPhotoToFavorites(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class CheckIfPhotoIsInFavorites extends AsyncUseCase<int, bool> {
|
class CheckIfPhotoIsInFavorites extends AsyncUseCase<int, bool> {
|
||||||
|
|
||||||
CheckIfPhotoIsInFavorites(this._photoRepository);
|
CheckIfPhotoIsInFavorites(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class DisplayFavorites extends AsyncUseCase<NoParam, List<Photo>> {
|
class DisplayFavorites extends AsyncUseCase<NoParam, List<Photo>> {
|
||||||
|
|
||||||
DisplayFavorites(this._photoRepository);
|
DisplayFavorites(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class DisplayPhoto extends AsyncUseCase<int, Photo> {
|
class DisplayPhoto extends AsyncUseCase<int, Photo> {
|
||||||
|
|
||||||
DisplayPhoto(this._photoRepository);
|
DisplayPhoto(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
@ -22,7 +22,6 @@ import 'package:architecture_example/domain/usecases/photos/params/query_paramet
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class OpenAlbum extends AsyncUseCase<QueryParameters, List<Photo>> {
|
class OpenAlbum extends AsyncUseCase<QueryParameters, List<Photo>> {
|
||||||
|
|
||||||
OpenAlbum(this._photoRepository);
|
OpenAlbum(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
class QueryParameters {
|
class QueryParameters {
|
||||||
|
|
||||||
QueryParameters(this.start, this.limit, {this.albumId = -1});
|
QueryParameters(this.start, this.limit, {this.albumId = -1});
|
||||||
final int albumId;
|
final int albumId;
|
||||||
final int? start;
|
final int? start;
|
||||||
|
@ -21,7 +21,6 @@ import 'package:architecture_example/domain/repositories/photo_repository.dart';
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class RemovePhotoFromFavorites extends AsyncUseCase<int, List<Photo>> {
|
class RemovePhotoFromFavorites extends AsyncUseCase<int, List<Photo>> {
|
||||||
|
|
||||||
RemovePhotoFromFavorites(this._photoRepository);
|
RemovePhotoFromFavorites(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
@ -22,7 +22,6 @@ import 'package:architecture_example/domain/usecases/photos/params/query_paramet
|
|||||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||||
|
|
||||||
class RetrieveAllAlbums extends AsyncUseCase<QueryParameters, List<Album>> {
|
class RetrieveAllAlbums extends AsyncUseCase<QueryParameters, List<Album>> {
|
||||||
|
|
||||||
RetrieveAllAlbums(this._photoRepository);
|
RetrieveAllAlbums(this._photoRepository);
|
||||||
final PhotoRepository _photoRepository;
|
final PhotoRepository _photoRepository;
|
||||||
|
|
||||||
|
@ -33,7 +33,6 @@ EventTransformer<E> throttleDroppable<E>(Duration duration) =>
|
|||||||
(events, mapper) => droppable<E>().call(events.throttle(duration), mapper);
|
(events, mapper) => droppable<E>().call(events.throttle(duration), mapper);
|
||||||
|
|
||||||
class AlbumBloc extends Bloc<AlbumEvent, AlbumState> {
|
class AlbumBloc extends Bloc<AlbumEvent, AlbumState> {
|
||||||
|
|
||||||
AlbumBloc(this._retrieveAllAlbums) : super(const AlbumState()) {
|
AlbumBloc(this._retrieveAllAlbums) : super(const AlbumState()) {
|
||||||
on<AlbumFetched>(
|
on<AlbumFetched>(
|
||||||
_onAlbumFetched,
|
_onAlbumFetched,
|
||||||
|
@ -22,8 +22,11 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
class AlbumsList extends StatefulWidget {
|
class AlbumsList extends StatefulWidget {
|
||||||
const AlbumsList(
|
const AlbumsList({
|
||||||
{required this.albums, required this.hasReachedMax, super.key,});
|
required this.albums,
|
||||||
|
required this.hasReachedMax,
|
||||||
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
final List<Album> albums;
|
final List<Album> albums;
|
||||||
final bool hasReachedMax;
|
final bool hasReachedMax;
|
||||||
|
@ -26,7 +26,6 @@ abstract class PhotoDetailsState extends Equatable {
|
|||||||
class PhotoDetailsInitial extends PhotoDetailsState {}
|
class PhotoDetailsInitial extends PhotoDetailsState {}
|
||||||
|
|
||||||
class PhotoDetailsSuccess extends PhotoDetailsState {
|
class PhotoDetailsSuccess extends PhotoDetailsState {
|
||||||
|
|
||||||
const PhotoDetailsSuccess(this.photo, {required this.isFavorite});
|
const PhotoDetailsSuccess(this.photo, {required this.isFavorite});
|
||||||
final Photo photo;
|
final Photo photo;
|
||||||
final bool isFavorite;
|
final bool isFavorite;
|
||||||
@ -36,7 +35,6 @@ class PhotoDetailsSuccess extends PhotoDetailsState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class PhotoDetailsFailure extends PhotoDetailsState {
|
class PhotoDetailsFailure extends PhotoDetailsState {
|
||||||
|
|
||||||
const PhotoDetailsFailure(this.error);
|
const PhotoDetailsFailure(this.error);
|
||||||
final String error;
|
final String error;
|
||||||
|
|
||||||
|
@ -23,7 +23,6 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
|||||||
part 'favorite_checker_state.dart';
|
part 'favorite_checker_state.dart';
|
||||||
|
|
||||||
class FavoriteCheckerCubit extends Cubit<FavoriteCheckerState> {
|
class FavoriteCheckerCubit extends Cubit<FavoriteCheckerState> {
|
||||||
|
|
||||||
FavoriteCheckerCubit(this._checkIfPhotoIsInFavorites)
|
FavoriteCheckerCubit(this._checkIfPhotoIsInFavorites)
|
||||||
: super(FavoriteCheckerInitial());
|
: super(FavoriteCheckerInitial());
|
||||||
final CheckIfPhotoIsInFavorites _checkIfPhotoIsInFavorites;
|
final CheckIfPhotoIsInFavorites _checkIfPhotoIsInFavorites;
|
||||||
|
@ -10,7 +10,6 @@ abstract class FavoriteCheckerState extends Equatable {
|
|||||||
class FavoriteCheckerInitial extends FavoriteCheckerState {}
|
class FavoriteCheckerInitial extends FavoriteCheckerState {}
|
||||||
|
|
||||||
class FavoriteCheckerSuccess extends FavoriteCheckerState {
|
class FavoriteCheckerSuccess extends FavoriteCheckerState {
|
||||||
|
|
||||||
const FavoriteCheckerSuccess(this.photoId, {required this.isFavorite});
|
const FavoriteCheckerSuccess(this.photoId, {required this.isFavorite});
|
||||||
final int photoId;
|
final int photoId;
|
||||||
final bool isFavorite;
|
final bool isFavorite;
|
||||||
@ -20,7 +19,6 @@ class FavoriteCheckerSuccess extends FavoriteCheckerState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class FavoriteCheckerFailure extends FavoriteCheckerState {
|
class FavoriteCheckerFailure extends FavoriteCheckerState {
|
||||||
|
|
||||||
const FavoriteCheckerFailure(this.error);
|
const FavoriteCheckerFailure(this.error);
|
||||||
final String error;
|
final String error;
|
||||||
|
|
||||||
|
@ -33,7 +33,6 @@ EventTransformer<E> throttleDroppable<E>(Duration duration) =>
|
|||||||
(events, mapper) => droppable<E>().call(events.throttle(duration), mapper);
|
(events, mapper) => droppable<E>().call(events.throttle(duration), mapper);
|
||||||
|
|
||||||
class PhotoBloc extends Bloc<PhotoEvent, PhotoState> {
|
class PhotoBloc extends Bloc<PhotoEvent, PhotoState> {
|
||||||
|
|
||||||
PhotoBloc(this._openAlbum) : super(const PhotoState()) {
|
PhotoBloc(this._openAlbum) : super(const PhotoState()) {
|
||||||
on<PhotoFetched>(
|
on<PhotoFetched>(
|
||||||
_onPhotoFetched,
|
_onPhotoFetched,
|
||||||
|
@ -24,7 +24,6 @@ abstract class PhotoEvent extends Equatable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class PhotoFetched extends PhotoEvent {
|
class PhotoFetched extends PhotoEvent {
|
||||||
|
|
||||||
const PhotoFetched(this.albumId);
|
const PhotoFetched(this.albumId);
|
||||||
final int albumId;
|
final int albumId;
|
||||||
}
|
}
|
||||||
|
@ -71,17 +71,17 @@ class _PhotosGridState extends State<PhotosGrid> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => GridView.builder(
|
Widget build(BuildContext context) => GridView.builder(
|
||||||
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
|
||||||
crossAxisSpacing: 4,
|
crossAxisSpacing: 4,
|
||||||
mainAxisSpacing: 4,
|
mainAxisSpacing: 4,
|
||||||
crossAxisCount: 4,
|
crossAxisCount: 4,
|
||||||
),
|
),
|
||||||
itemCount: widget.hasReachedMax
|
itemCount: widget.hasReachedMax
|
||||||
? widget.photos.length
|
? widget.photos.length
|
||||||
: widget.photos.length + 1,
|
: widget.photos.length + 1,
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
itemBuilder: (context, index) => index >= widget.photos.length
|
itemBuilder: (context, index) => index >= widget.photos.length
|
||||||
? const BottomLoader()
|
? const BottomLoader()
|
||||||
: PhotosGridThumbnail(photo: widget.photos[index]),
|
: PhotosGridThumbnail(photo: widget.photos[index]),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,10 @@ class PhotosGridThumbnail
|
|||||||
),
|
),
|
||||||
if (state is FavoriteCheckerSuccess && state.isFavorite) ...[
|
if (state is FavoriteCheckerSuccess && state.isFavorite) ...[
|
||||||
const Positioned(
|
const Positioned(
|
||||||
bottom: 10, right: 10, child: Icon(Icons.favorite),)
|
bottom: 10,
|
||||||
|
right: 10,
|
||||||
|
child: Icon(Icons.favorite),
|
||||||
|
)
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
||||||
|
|
||||||
abstract class AppException implements Exception {
|
abstract class AppException implements Exception {
|
||||||
|
|
||||||
AppException([this.message]);
|
AppException([this.message]);
|
||||||
final String? message;
|
final String? message;
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
|||||||
class MockAuthenticationRepository extends Mock
|
class MockAuthenticationRepository extends Mock
|
||||||
implements AuthenticationRepository<int> {}
|
implements AuthenticationRepository<int> {}
|
||||||
|
|
||||||
class MockAuthenticationCubit extends Mock implements AuthenticationCubit<int> {
|
class MockAuthenticationCubit extends Mock
|
||||||
}
|
implements AuthenticationCubit<int> {}
|
||||||
|
|
||||||
class MockAccount extends Mock implements Account {}
|
class MockAccount extends Mock implements Account {}
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
|||||||
class MockAuthenticationRepository extends Mock
|
class MockAuthenticationRepository extends Mock
|
||||||
implements AuthenticationRepository<int> {}
|
implements AuthenticationRepository<int> {}
|
||||||
|
|
||||||
class MockAuthenticationCubit extends Mock implements AuthenticationCubit<int> {
|
class MockAuthenticationCubit extends Mock
|
||||||
}
|
implements AuthenticationCubit<int> {}
|
||||||
|
|
||||||
class MockAccount extends Mock implements Account {}
|
class MockAccount extends Mock implements Account {}
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
|||||||
class MockAuthenticationRepository extends Mock
|
class MockAuthenticationRepository extends Mock
|
||||||
implements AuthenticationRepository<int> {}
|
implements AuthenticationRepository<int> {}
|
||||||
|
|
||||||
class MockAuthenticationCubit extends Mock implements AuthenticationCubit<int> {
|
class MockAuthenticationCubit extends Mock
|
||||||
}
|
implements AuthenticationCubit<int> {}
|
||||||
|
|
||||||
class MockAccount extends Mock implements Account {}
|
class MockAccount extends Mock implements Account {}
|
||||||
|
|
||||||
|
@ -25,8 +25,8 @@ import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
|||||||
class MockAuthenticationRepository extends Mock
|
class MockAuthenticationRepository extends Mock
|
||||||
implements AuthenticationRepository<int> {}
|
implements AuthenticationRepository<int> {}
|
||||||
|
|
||||||
class MockAuthenticationCubit extends Mock implements AuthenticationCubit<int> {
|
class MockAuthenticationCubit extends Mock
|
||||||
}
|
implements AuthenticationCubit<int> {}
|
||||||
|
|
||||||
class MockAccount extends Mock implements Account {}
|
class MockAccount extends Mock implements Account {}
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
@ -25,7 +25,6 @@ class CounterBloc extends Bloc<CounterEvent, CounterState> {
|
|||||||
final CounterRepository counterRepository;
|
final CounterRepository counterRepository;
|
||||||
|
|
||||||
CounterBloc(this.counterRepository) : super(const CounterInitial()) {
|
CounterBloc(this.counterRepository) : super(const CounterInitial()) {
|
||||||
|
|
||||||
on<CounterIncrement>((event, emit) {
|
on<CounterIncrement>((event, emit) {
|
||||||
emit(CounterModified(counterRepository.increment(state.count)));
|
emit(CounterModified(counterRepository.increment(state.count)));
|
||||||
});
|
});
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
@ -32,4 +32,3 @@ class CounterInitial extends CounterState {
|
|||||||
class CounterModified extends CounterState {
|
class CounterModified extends CounterState {
|
||||||
const CounterModified(super.count);
|
const CounterModified(super.count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,14 +24,16 @@ class CounterBlocPage
|
|||||||
const CounterBlocPage({super.key});
|
const CounterBlocPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
CounterBloc create(BuildContext context) => CounterBloc(repo<CounterRepository>(context));
|
CounterBloc create(BuildContext context) =>
|
||||||
|
CounterBloc(repo<CounterRepository>(context));
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget onBuild(BuildContext context, CounterState state) {
|
Widget onBuild(BuildContext context, CounterState state) {
|
||||||
final textTheme = Theme.of(context).textTheme;
|
final textTheme = Theme.of(context).textTheme;
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(title: const Text('Counter with Bloc')),
|
appBar: AppBar(title: const Text('Counter with Bloc')),
|
||||||
body: Center(child: Text('${state.count}', style: textTheme.headline2)),
|
body:
|
||||||
|
Center(child: Text('${state.count}', style: textTheme.displayMedium)),
|
||||||
floatingActionButton: Column(
|
floatingActionButton: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
|
@ -28,7 +28,8 @@ class CounterConsumerPage
|
|||||||
final textTheme = Theme.of(context).textTheme;
|
final textTheme = Theme.of(context).textTheme;
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(title: const Text('Counter with Consumer')),
|
appBar: AppBar(title: const Text('Counter with Consumer')),
|
||||||
body: Center(child: Text('${state.count}', style: textTheme.headline2)),
|
body:
|
||||||
|
Center(child: Text('${state.count}', style: textTheme.displayMedium)),
|
||||||
floatingActionButton: Column(
|
floatingActionButton: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
@ -19,19 +19,20 @@ import 'package:bloc_helper_example/counter/repository/counter_repository.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart';
|
import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart';
|
||||||
|
|
||||||
class CounterCubitPage
|
class CounterCubitPage extends CubitScreen<CounterCubit, CounterState> {
|
||||||
extends CubitScreen<CounterCubit, CounterState> {
|
|
||||||
const CounterCubitPage({super.key});
|
const CounterCubitPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
CounterCubit create(BuildContext context) => CounterCubit(repo<CounterRepository>(context));
|
CounterCubit create(BuildContext context) =>
|
||||||
|
CounterCubit(repo<CounterRepository>(context));
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget onBuild(BuildContext context, CounterState state) {
|
Widget onBuild(BuildContext context, CounterState state) {
|
||||||
final textTheme = Theme.of(context).textTheme;
|
final textTheme = Theme.of(context).textTheme;
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(title: const Text('Counter with Cubit')),
|
appBar: AppBar(title: const Text('Counter with Cubit')),
|
||||||
body: Center(child: Text('${state.count}', style: textTheme.headline2)),
|
body:
|
||||||
|
Center(child: Text('${state.count}', style: textTheme.displayMedium)),
|
||||||
floatingActionButton: Column(
|
floatingActionButton: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
@ -53,4 +54,4 @@ class CounterCubitPage
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ class CounterProviderPage
|
|||||||
appBar: AppBar(title: const Text('Counter with Provider')),
|
appBar: AppBar(title: const Text('Counter with Provider')),
|
||||||
body: Center(child: BlocBuilder<CounterBloc, CounterState>(
|
body: Center(child: BlocBuilder<CounterBloc, CounterState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
return Text('${state.count}', style: textTheme.headline2);
|
return Text('${state.count}', style: textTheme.displayMedium);
|
||||||
},
|
},
|
||||||
)),
|
)),
|
||||||
floatingActionButton: Column(
|
floatingActionButton: Column(
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
@ -32,4 +32,3 @@ class CounterInitial extends CounterState {
|
|||||||
class CounterModified extends CounterState {
|
class CounterModified extends CounterState {
|
||||||
const CounterModified(super.count);
|
const CounterModified(super.count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ class CounterObserver extends BlocObserver {
|
|||||||
super.onChange(bloc, change);
|
super.onChange(bloc, change);
|
||||||
debugPrint('${bloc.runtimeType} $change');
|
debugPrint('${bloc.runtimeType} $change');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,8 @@ class MainPage extends StatelessWidget {
|
|||||||
onPressed: () => Navigator.of(context)
|
onPressed: () => Navigator.of(context)
|
||||||
.push(MaterialPageRoute(builder: (context) {
|
.push(MaterialPageRoute(builder: (context) {
|
||||||
return BlocProvider<CounterCubit>(
|
return BlocProvider<CounterCubit>(
|
||||||
create: (context) => CounterCubit(context.read<CounterRepository>()),
|
create: (context) =>
|
||||||
|
CounterCubit(context.read<CounterRepository>()),
|
||||||
child: const CounterConsumerPage(),
|
child: const CounterConsumerPage(),
|
||||||
);
|
);
|
||||||
})),
|
})),
|
||||||
|
@ -25,7 +25,7 @@ mixin BlocBaseProviderMixin<Bloc extends BlocBase<Object>> {
|
|||||||
|
|
||||||
/// Returns another [BlocBase] **not** used by this [BlocBaseProviderMixin].
|
/// Returns another [BlocBase] **not** used by this [BlocBaseProviderMixin].
|
||||||
/// Short hand for `context.read<AnotherBloc>();`
|
/// Short hand for `context.read<AnotherBloc>();`
|
||||||
///
|
///
|
||||||
/// To get [BlocBase] used by by this [BlocBaseProviderMixin] see `bloc()`
|
/// To get [BlocBase] used by by this [BlocBaseProviderMixin] see `bloc()`
|
||||||
AnotherBloc anotherBloc<AnotherBloc>(BuildContext context) =>
|
AnotherBloc anotherBloc<AnotherBloc>(BuildContext context) =>
|
||||||
context.read<AnotherBloc>();
|
context.read<AnotherBloc>();
|
||||||
|
@ -21,7 +21,7 @@ import 'package:flutter_bloc/flutter_bloc.dart' as blocbase;
|
|||||||
/// of helper methods for events.
|
/// of helper methods for events.
|
||||||
mixin BlocProviderMixin<Bloc extends blocbase.Bloc<Event, Object>, Event> {
|
mixin BlocProviderMixin<Bloc extends blocbase.Bloc<Event, Object>, Event> {
|
||||||
/// Add an event to the [Bloc].
|
/// Add an event to the [Bloc].
|
||||||
///
|
///
|
||||||
/// Short hand for `context.read<Bloc>().add(event)`.
|
/// Short hand for `context.read<Bloc>().add(event)`.
|
||||||
void add(BuildContext context, Event event) =>
|
void add(BuildContext context, Event event) =>
|
||||||
context.read<Bloc>().add(event);
|
context.read<Bloc>().add(event);
|
||||||
|
@ -18,14 +18,14 @@ import 'package:flutter/widgets.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
/// {@template multi_provider}
|
/// {@template multi_provider}
|
||||||
/// Merges [MultiRepositoryProvider] and [MultiBlocProvider] widgets into
|
/// Merges [MultiRepositoryProvider] and [MultiBlocProvider] widgets into
|
||||||
/// one widget tree.
|
/// one widget tree.
|
||||||
///
|
///
|
||||||
/// [MultiProvider] improves the readability and eliminates the need
|
/// [MultiProvider] improves the readability and eliminates the need
|
||||||
/// to nest multiple providers.
|
/// to nest multiple providers.
|
||||||
///
|
///
|
||||||
/// By using [MultiProvider] we can go from:
|
/// By using [MultiProvider] we can go from:
|
||||||
///
|
///
|
||||||
/// ```dart
|
/// ```dart
|
||||||
/// MultiRepositoryProvider(
|
/// MultiRepositoryProvider(
|
||||||
/// providers: [
|
/// providers: [
|
||||||
@ -69,7 +69,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
|||||||
/// )
|
/// )
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// [MultiProvider] converts the [RepositoryProvider] and [BlocProvider] lists
|
/// [MultiProvider] converts the [RepositoryProvider] and [BlocProvider] lists
|
||||||
/// into a tree of nested provider widgets.
|
/// into a tree of nested provider widgets.
|
||||||
/// As a result, the only advantage of using [MultiProvider] is
|
/// As a result, the only advantage of using [MultiProvider] is
|
||||||
/// improved readability due to the reduction in nesting and boilerplate.
|
/// improved readability due to the reduction in nesting and boilerplate.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (C) 2022 WYATT GROUP
|
# Copyright (C) 2023 WYATT GROUP
|
||||||
# Please see the AUTHORS file for details.
|
# Please see the AUTHORS file for details.
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
@ -14,6 +14,4 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
include: package:wyatt_analysis/analysis_options.flutter.yaml
|
||||||
include: package:wyatt_analysis/analysis_options.flutter.experimental.yaml
|
|
||||||
|
|
||||||
|
@ -10,9 +10,9 @@ class ExampleCubit extends Cubit<CrudState> {
|
|||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
emit(CrudLoading());
|
emit(CrudLoading());
|
||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
emit(CrudError('Cubit Error'));
|
emit(const CrudError('Cubit Error'));
|
||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
emit(CrudLoaded<String>('DATA LOADED'));
|
emit(const CrudLoaded<String>('DATA LOADED'));
|
||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
emit(CrudInitial());
|
emit(CrudInitial());
|
||||||
}
|
}
|
||||||
@ -23,14 +23,16 @@ class ExampleCubit extends Cubit<CrudState> {
|
|||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
emit(CrudLoading());
|
emit(CrudLoading());
|
||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
emit(CrudError('Cubit Error'));
|
emit(const CrudError('Cubit Error'));
|
||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
emit(CrudListLoaded<String>([
|
emit(
|
||||||
'DATA LOADED 1',
|
const CrudListLoaded<String>([
|
||||||
'DATA LOADED 2',
|
'DATA LOADED 1',
|
||||||
'DATA LOADED 3',
|
'DATA LOADED 2',
|
||||||
'DATA LOADED 4'
|
'DATA LOADED 3',
|
||||||
]));
|
'DATA LOADED 4'
|
||||||
|
]),
|
||||||
|
);
|
||||||
await Future.delayed(const Duration(seconds: 1));
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
emit(CrudInitial());
|
emit(CrudInitial());
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ part 'custom_app_bar.g.dart';
|
|||||||
|
|
||||||
@ComponentCopyWithExtension()
|
@ComponentCopyWithExtension()
|
||||||
class CustomAppBar extends TopAppBarComponent with $CustomAppBarCWMixin {
|
class CustomAppBar extends TopAppBarComponent with $CustomAppBarCWMixin {
|
||||||
const CustomAppBar({super.title});
|
const CustomAppBar({super.key, super.title});
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => AppBar(
|
Widget build(BuildContext context) => AppBar(
|
||||||
title: Text(title?.data ?? 'Title'),
|
title: Text(title?.data ?? 'Title'),
|
||||||
|
@ -7,19 +7,23 @@ part 'custom_bottom_bar.g.dart';
|
|||||||
@ComponentCopyWithExtension()
|
@ComponentCopyWithExtension()
|
||||||
class CustomBottomBar extends BottomNavigationBarComponent
|
class CustomBottomBar extends BottomNavigationBarComponent
|
||||||
with $CustomBottomBarCWMixin {
|
with $CustomBottomBarCWMixin {
|
||||||
|
const CustomBottomBar({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => BottomNavigationBar(
|
Widget build(BuildContext context) => BottomNavigationBar(
|
||||||
items: [
|
items: const [
|
||||||
BottomNavigationBarItem(
|
BottomNavigationBarItem(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
Icons.e_mobiledata,
|
Icons.e_mobiledata,
|
||||||
),
|
),
|
||||||
label: 'Icon 1'),
|
label: 'Icon 1',
|
||||||
|
),
|
||||||
BottomNavigationBarItem(
|
BottomNavigationBarItem(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
Icons.do_not_disturb_off,
|
Icons.do_not_disturb_off,
|
||||||
),
|
),
|
||||||
label: 'Icon 2'),
|
label: 'Icon 2',
|
||||||
|
),
|
||||||
],
|
],
|
||||||
backgroundColor: Colors.blue,
|
backgroundColor: Colors.blue,
|
||||||
);
|
);
|
||||||
|
@ -7,7 +7,7 @@ part 'custom_error_widget.g.dart';
|
|||||||
@ComponentCopyWithExtension()
|
@ComponentCopyWithExtension()
|
||||||
class CustomErrorWidget extends ErrorWidgetComponent
|
class CustomErrorWidget extends ErrorWidgetComponent
|
||||||
with $CustomErrorWidgetCWMixin {
|
with $CustomErrorWidgetCWMixin {
|
||||||
CustomErrorWidget({super.error});
|
CustomErrorWidget({super.key, super.error});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => ColoredBox(
|
Widget build(BuildContext context) => ColoredBox(
|
||||||
|
@ -7,7 +7,7 @@ part 'custom_loading_widget.g.dart';
|
|||||||
@ComponentCopyWithExtension()
|
@ComponentCopyWithExtension()
|
||||||
class CustomLoadingWidget extends LoadingWidgetComponent
|
class CustomLoadingWidget extends LoadingWidgetComponent
|
||||||
with $CustomLoadingWidgetCWMixin {
|
with $CustomLoadingWidgetCWMixin {
|
||||||
CustomLoadingWidget({super.color});
|
CustomLoadingWidget({super.key, super.color});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) =>
|
Widget build(BuildContext context) =>
|
||||||
|
@ -6,8 +6,8 @@ import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
|
|||||||
|
|
||||||
class AppThemeComponent {
|
class AppThemeComponent {
|
||||||
static ComponentThemeData get components => ComponentThemeData.raw(
|
static ComponentThemeData get components => ComponentThemeData.raw(
|
||||||
appBar: CustomAppBar(),
|
appBar: const CustomAppBar(),
|
||||||
bottomNavigationBar: CustomBottomBar(),
|
bottomNavigationBar: const CustomBottomBar(),
|
||||||
loadingWidget: CustomLoadingWidget(),
|
loadingWidget: CustomLoadingWidget(),
|
||||||
errorWidget: CustomErrorWidget(),
|
errorWidget: CustomErrorWidget(),
|
||||||
);
|
);
|
||||||
|
@ -28,61 +28,63 @@ class MyApp extends StatelessWidget {
|
|||||||
|
|
||||||
// This widget is the root of your application.
|
// This widget is the root of your application.
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) => ComponentTheme(
|
||||||
return ComponentTheme(
|
componentThemeWidget: AppThemeComponent.components,
|
||||||
componentThemeWidget: AppThemeComponent.components,
|
child: MaterialApp(
|
||||||
child: MaterialApp(
|
title: 'Bloc Layout Example',
|
||||||
title: 'Bloc Layout Example',
|
theme: ThemeData(
|
||||||
theme: ThemeData(
|
primarySwatch: Colors.blue,
|
||||||
primarySwatch: Colors.blue,
|
),
|
||||||
),
|
home: Scaffold(
|
||||||
home: Scaffold(
|
body: Column(
|
||||||
body: Column(
|
children: [
|
||||||
children: [
|
Expanded(
|
||||||
Expanded(
|
child: Row(
|
||||||
child: Row(
|
children: [
|
||||||
children: [
|
Expanded(
|
||||||
Expanded(
|
child: BlocProvider(
|
||||||
child: BlocProvider(
|
|
||||||
create: (_) => ExampleCubit()..run(),
|
|
||||||
child: ExampleCrudStateManagement(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: BlocProvider(
|
|
||||||
create: (_) => ExampleCubit()..runList(),
|
|
||||||
child: ExampleListCrudStateManagement(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
child: BlocProvider(
|
|
||||||
create: (_) => ExampleCubit()..run(),
|
create: (_) => ExampleCubit()..run(),
|
||||||
child: ExampleFrameLayoutCrudConsumer()),
|
child: const ExampleCrudStateManagement(),
|
||||||
),
|
),
|
||||||
Expanded(
|
),
|
||||||
child: BlocProvider(
|
Expanded(
|
||||||
|
child: BlocProvider(
|
||||||
create: (_) => ExampleCubit()..runList(),
|
create: (_) => ExampleCubit()..runList(),
|
||||||
child: ExampleFrameLayoutCrudListConsumer()),
|
child: const ExampleListCrudStateManagement(),
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
Expanded(
|
||||||
],
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: BlocProvider(
|
||||||
|
create: (_) => ExampleCubit()..run(),
|
||||||
|
child: const ExampleFrameLayoutCrudConsumer(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: BlocProvider(
|
||||||
|
create: (_) => ExampleCubit()..runList(),
|
||||||
|
child: const ExampleFrameLayoutCrudListConsumer(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ExampleCrudStateManagement
|
class ExampleCrudStateManagement
|
||||||
extends CrudCubitConsumerScreen<ExampleCubit, String> {
|
extends CrudCubitConsumerScreen<ExampleCubit, String> {
|
||||||
|
const ExampleCrudStateManagement({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget initialBuilder(BuildContext context, CrudInitial state) =>
|
Widget initialBuilder(BuildContext context, CrudInitial state) =>
|
||||||
Container(color: Colors.yellow);
|
Container(color: Colors.yellow);
|
||||||
@ -93,6 +95,8 @@ class ExampleCrudStateManagement
|
|||||||
|
|
||||||
class ExampleListCrudStateManagement
|
class ExampleListCrudStateManagement
|
||||||
extends CrudListCubitConsumerScreen<ExampleCubit, String> {
|
extends CrudListCubitConsumerScreen<ExampleCubit, String> {
|
||||||
|
const ExampleListCrudStateManagement({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget initialBuilder(BuildContext context, CrudInitial state) =>
|
Widget initialBuilder(BuildContext context, CrudInitial state) =>
|
||||||
Container(color: Colors.green);
|
Container(color: Colors.green);
|
||||||
@ -106,7 +110,7 @@ class ExampleListCrudStateManagement
|
|||||||
|
|
||||||
class ExampleFrameLayoutCrudConsumer
|
class ExampleFrameLayoutCrudConsumer
|
||||||
extends FrameLayoutCrudCubitConsumerScreen<ExampleCubit, String> {
|
extends FrameLayoutCrudCubitConsumerScreen<ExampleCubit, String> {
|
||||||
const ExampleFrameLayoutCrudConsumer()
|
const ExampleFrameLayoutCrudConsumer({super.key})
|
||||||
: super(
|
: super(
|
||||||
title: 'Example Title',
|
title: 'Example Title',
|
||||||
currentIndex: 0,
|
currentIndex: 0,
|
||||||
@ -119,7 +123,7 @@ class ExampleFrameLayoutCrudConsumer
|
|||||||
|
|
||||||
class ExampleFrameLayoutCrudListConsumer
|
class ExampleFrameLayoutCrudListConsumer
|
||||||
extends FrameLayoutCrudListCubitConsumerScreen<ExampleCubit, String> {
|
extends FrameLayoutCrudListCubitConsumerScreen<ExampleCubit, String> {
|
||||||
const ExampleFrameLayoutCrudListConsumer()
|
const ExampleFrameLayoutCrudListConsumer({super.key})
|
||||||
: super(
|
: super(
|
||||||
title: 'Example Title',
|
title: 'Example Title',
|
||||||
currentIndex: 0,
|
currentIndex: 0,
|
||||||
|
@ -12,4 +12,4 @@
|
|||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
@ -20,7 +20,7 @@ import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
|
|||||||
import 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
|
import 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
||||||
|
|
||||||
mixin CrudMixin<Cubit extends bloc_base.Cubit,
|
mixin CrudMixin<Cubit extends bloc_base.Cubit<dynamic>,
|
||||||
SuccessState extends CrudSuccess> {
|
SuccessState extends CrudSuccess> {
|
||||||
Widget errorBuilder(BuildContext context, CrudError state) =>
|
Widget errorBuilder(BuildContext context, CrudError state) =>
|
||||||
context.components.errorWidget?.copyWith(error: state.message.wrap()) ??
|
context.components.errorWidget?.copyWith(error: state.message.wrap()) ??
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import 'package:flutter/src/widgets/framework.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
|
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
|
||||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
|
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
|
||||||
|
|
||||||
|
@ -16,5 +16,5 @@
|
|||||||
|
|
||||||
export './app_bar_layout_crud_cubit_consumer_screen.dart';
|
export './app_bar_layout_crud_cubit_consumer_screen.dart';
|
||||||
export './bottom_bar_layout_crud_cubit_consumer_screen.dart';
|
export './bottom_bar_layout_crud_cubit_consumer_screen.dart';
|
||||||
export './frame_layout_crud_cubit_consumer_screen.dart';
|
|
||||||
export './crud_cubit_consumer_screen.dart';
|
export './crud_cubit_consumer_screen.dart';
|
||||||
|
export './frame_layout_crud_cubit_consumer_screen.dart';
|
||||||
|
@ -15,8 +15,8 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
|
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
|
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
|
||||||
|
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
|
||||||
|
|
||||||
abstract class CrudCubitConsumerScreen<Cubit extends bloc_base.Cubit<CrudState>,
|
abstract class CrudCubitConsumerScreen<Cubit extends bloc_base.Cubit<CrudState>,
|
||||||
T extends Object?> extends CubitConsumerScreen<Cubit, CrudState>
|
T extends Object?> extends CubitConsumerScreen<Cubit, CrudState>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
export './crud_cubit_screen.dart';
|
||||||
export 'app_bar_layout_crud_cubit_screen.dart';
|
export 'app_bar_layout_crud_cubit_screen.dart';
|
||||||
export 'bottom_bar_layout_crud_cubit_screen.dart';
|
export 'bottom_bar_layout_crud_cubit_screen.dart';
|
||||||
export 'frame_layout_crud_cubit_screen.dart';
|
export 'frame_layout_crud_cubit_screen.dart';
|
||||||
export './crud_cubit_screen.dart';
|
|
||||||
|
@ -15,8 +15,8 @@
|
|||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
|
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
|
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
|
||||||
|
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
|
||||||
|
|
||||||
abstract class CrudCubitScreen<Cubit extends bloc_base.Cubit<CrudState>,
|
abstract class CrudCubitScreen<Cubit extends bloc_base.Cubit<CrudState>,
|
||||||
T extends Object?> extends CubitScreen<Cubit, CrudState>
|
T extends Object?> extends CubitScreen<Cubit, CrudState>
|
||||||
|
@ -14,11 +14,11 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
export 'presentation/presentation.dart';
|
|
||||||
export 'core/core.dart';
|
|
||||||
|
|
||||||
export 'package:flutter_bloc/flutter_bloc.dart';
|
export 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
export 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
|
||||||
export 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
|
|
||||||
export 'package:wyatt_ui_layout/wyatt_wyatt_ui_layout.dart';
|
|
||||||
export 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart';
|
export 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart';
|
||||||
|
export 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
|
||||||
|
export 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
|
||||||
|
export 'package:wyatt_ui_layout/wyatt_wyatt_ui_layout.dart';
|
||||||
|
|
||||||
|
export 'core/core.dart';
|
||||||
|
export 'presentation/presentation.dart';
|
||||||
|
@ -3,14 +3,17 @@ description: Layouts based on bloc helper library
|
|||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_bloc_layout
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_bloc_layout
|
||||||
version: 0.0.1
|
version: 0.0.1
|
||||||
|
|
||||||
|
publish_to: "none"
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.17.0 <3.0.0'
|
sdk: ">=2.17.0 <3.0.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
|
flutter_bloc: ^8.1.2
|
||||||
|
|
||||||
wyatt_bloc_helper:
|
wyatt_bloc_helper:
|
||||||
git:
|
git:
|
||||||
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
||||||
@ -32,13 +35,11 @@ dependencies:
|
|||||||
path: packages/wyatt_ui_components
|
path: packages/wyatt_ui_components
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
git:
|
git:
|
||||||
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
||||||
ref: wyatt_analysis-v2.4.0
|
ref: wyatt_analysis-v2.4.0
|
||||||
path: packages/wyatt_analysis
|
path: packages/wyatt_analysis
|
||||||
|
@ -1,7 +1 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
include: package:wyatt_analysis/analysis_options.yaml
|
include: package:wyatt_analysis/analysis_options.yaml
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@ description: Generator for copywith method for components.
|
|||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/component_copy_with_gen
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/component_copy_with_gen
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
|
||||||
|
publish_to: "none"
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.19.0 <3.0.0"
|
sdk: ">=2.19.0 <3.0.0"
|
||||||
|
|
||||||
|
@ -92,7 +92,6 @@ class MyHomePage extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
@ -121,9 +120,7 @@ class MyHomePage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
context
|
context.read<UserCubit>().query([LimitQuery(2)]);
|
||||||
.read<UserCubit>()
|
|
||||||
.query([LimitQuery(2)]);
|
|
||||||
},
|
},
|
||||||
child: const Text("Query"),
|
child: const Text("Query"),
|
||||||
),
|
),
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ import 'package:wyatt_crud_bloc/src/domain/entities/query.dart';
|
|||||||
|
|
||||||
class CrudInMemoryDataSourceImpl<Model extends ObjectModel>
|
class CrudInMemoryDataSourceImpl<Model extends ObjectModel>
|
||||||
extends CrudDataSource<Model> {
|
extends CrudDataSource<Model> {
|
||||||
|
|
||||||
CrudInMemoryDataSourceImpl({required this.toMap, Map<String, Model>? data})
|
CrudInMemoryDataSourceImpl({required this.toMap, Map<String, Model>? data})
|
||||||
: _data = data ?? {};
|
: _data = data ?? {};
|
||||||
final Map<String, Model> _data;
|
final Map<String, Model> _data;
|
||||||
|
@ -22,7 +22,6 @@ import 'package:wyatt_crud_bloc/src/domain/entities/query.dart';
|
|||||||
|
|
||||||
class CrudFirestoreDataSourceImpl<Model extends ObjectModel, Entity>
|
class CrudFirestoreDataSourceImpl<Model extends ObjectModel, Entity>
|
||||||
extends CrudDataSource<Model> {
|
extends CrudDataSource<Model> {
|
||||||
|
|
||||||
CrudFirestoreDataSourceImpl(
|
CrudFirestoreDataSourceImpl(
|
||||||
String collection, {
|
String collection, {
|
||||||
required Model Function(
|
required Model Function(
|
||||||
|
@ -23,7 +23,6 @@ import 'package:wyatt_type_utils/wyatt_type_utils.dart';
|
|||||||
|
|
||||||
class CrudRepositoryImpl<Model extends ObjectModel>
|
class CrudRepositoryImpl<Model extends ObjectModel>
|
||||||
extends CrudRepository<Model> {
|
extends CrudRepository<Model> {
|
||||||
|
|
||||||
CrudRepositoryImpl({
|
CrudRepositoryImpl({
|
||||||
required CrudDataSource<Model> crudDataSource,
|
required CrudDataSource<Model> crudDataSource,
|
||||||
}) : _crudDataSource = crudDataSource;
|
}) : _crudDataSource = crudDataSource;
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -25,7 +25,6 @@ abstract class QueryParser<Q> {
|
|||||||
abstract class QueryInterface extends Entity {}
|
abstract class QueryInterface extends Entity {}
|
||||||
|
|
||||||
class WhereQuery<Value> extends QueryInterface {
|
class WhereQuery<Value> extends QueryInterface {
|
||||||
|
|
||||||
WhereQuery(this.type, this.field, this.value);
|
WhereQuery(this.type, this.field, this.value);
|
||||||
final WhereQueryType type;
|
final WhereQueryType type;
|
||||||
final String field;
|
final String field;
|
||||||
@ -33,13 +32,11 @@ class WhereQuery<Value> extends QueryInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class LimitQuery extends QueryInterface {
|
class LimitQuery extends QueryInterface {
|
||||||
|
|
||||||
LimitQuery(this.limit);
|
LimitQuery(this.limit);
|
||||||
final int limit;
|
final int limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
class OrderByQuery extends QueryInterface {
|
class OrderByQuery extends QueryInterface {
|
||||||
|
|
||||||
OrderByQuery(this.field, {this.ascending = true});
|
OrderByQuery(this.field, {this.ascending = true});
|
||||||
final String field;
|
final String field;
|
||||||
final bool ascending;
|
final bool ascending;
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart';
|
|||||||
import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
||||||
|
|
||||||
class Delete<Model extends ObjectModel> extends AsyncUseCase<String, void> {
|
class Delete<Model extends ObjectModel> extends AsyncUseCase<String, void> {
|
||||||
|
|
||||||
Delete(this._crudRepository);
|
Delete(this._crudRepository);
|
||||||
final CrudRepository<Model> _crudRepository;
|
final CrudRepository<Model> _crudRepository;
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@ import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart';
|
|||||||
import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
||||||
|
|
||||||
class DeleteAll<Model extends ObjectModel> extends AsyncUseCase<void, void> {
|
class DeleteAll<Model extends ObjectModel> extends AsyncUseCase<void, void> {
|
||||||
|
|
||||||
DeleteAll(this._crudRepository);
|
DeleteAll(this._crudRepository);
|
||||||
final CrudRepository<Model> _crudRepository;
|
final CrudRepository<Model> _crudRepository;
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ import 'package:wyatt_crud_bloc/src/domain/entities/object_model.dart';
|
|||||||
import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
||||||
|
|
||||||
class Get<Model extends ObjectModel> extends AsyncUseCase<String, Model?> {
|
class Get<Model extends ObjectModel> extends AsyncUseCase<String, Model?> {
|
||||||
|
|
||||||
Get(this._crudRepository);
|
Get(this._crudRepository);
|
||||||
final CrudRepository<Model> _crudRepository;
|
final CrudRepository<Model> _crudRepository;
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
|||||||
|
|
||||||
class GetAll<Model extends ObjectModel>
|
class GetAll<Model extends ObjectModel>
|
||||||
extends AsyncUseCase<void, List<Model?>> {
|
extends AsyncUseCase<void, List<Model?>> {
|
||||||
|
|
||||||
GetAll(this._crudRepository);
|
GetAll(this._crudRepository);
|
||||||
final CrudRepository<Model> _crudRepository;
|
final CrudRepository<Model> _crudRepository;
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import 'package:wyatt_crud_bloc/src/domain/entities/query.dart';
|
|||||||
class StreamParameters {
|
class StreamParameters {
|
||||||
final String? id;
|
final String? id;
|
||||||
final List<QueryInterface>? conditions;
|
final List<QueryInterface>? conditions;
|
||||||
|
|
||||||
StreamParameters({
|
StreamParameters({
|
||||||
this.id,
|
this.id,
|
||||||
this.conditions,
|
this.conditions,
|
||||||
|
@ -19,7 +19,7 @@ class UpdateParameters<Model> {
|
|||||||
final String id;
|
final String id;
|
||||||
final Model? object;
|
final Model? object;
|
||||||
final Map<String, dynamic>? raw;
|
final Map<String, dynamic>? raw;
|
||||||
|
|
||||||
UpdateParameters({
|
UpdateParameters({
|
||||||
required this.id,
|
required this.id,
|
||||||
this.object,
|
this.object,
|
||||||
|
@ -23,7 +23,6 @@ import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
|||||||
|
|
||||||
class Query<Model extends ObjectModel>
|
class Query<Model extends ObjectModel>
|
||||||
extends AsyncUseCase<List<QueryInterface>, List<Model?>> {
|
extends AsyncUseCase<List<QueryInterface>, List<Model?>> {
|
||||||
|
|
||||||
Query(this._crudRepository);
|
Query(this._crudRepository);
|
||||||
final CrudRepository<Model> _crudRepository;
|
final CrudRepository<Model> _crudRepository;
|
||||||
|
|
||||||
|
@ -14,9 +14,8 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
// class Stream<Model extends ObjectModel> extends UseCase<StreamParameters,
|
||||||
|
//List<Model?>> {
|
||||||
// class Stream<Model extends ObjectModel> extends UseCase<StreamParameters, List<Model?>> {
|
|
||||||
// final CrudRepository<Model> _crudRepository;
|
// final CrudRepository<Model> _crudRepository;
|
||||||
|
|
||||||
// Stream(this._crudRepository);
|
// Stream(this._crudRepository);
|
||||||
@ -38,7 +37,8 @@
|
|||||||
// throw ClientException('Stream parameters cannot be null.');
|
// throw ClientException('Stream parameters cannot be null.');
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// @override
|
// @override
|
||||||
// FutureOrResult<Stream<List<Model?>>> call(StreamParameters? params) => _crudRepository.stream();
|
// FutureOrResult<Stream<List<Model?>>> call(StreamParameters? params) =>
|
||||||
|
// _crudRepository.stream();
|
||||||
// }
|
// }
|
||||||
|
@ -23,7 +23,6 @@ import 'package:wyatt_crud_bloc/src/domain/usecases/params/update_parameters.dar
|
|||||||
|
|
||||||
class Update<Model extends ObjectModel>
|
class Update<Model extends ObjectModel>
|
||||||
extends AsyncUseCase<UpdateParameters<Model>, void> {
|
extends AsyncUseCase<UpdateParameters<Model>, void> {
|
||||||
|
|
||||||
Update(this._crudRepository);
|
Update(this._crudRepository);
|
||||||
final CrudRepository<Model> _crudRepository;
|
final CrudRepository<Model> _crudRepository;
|
||||||
|
|
||||||
|
@ -22,7 +22,6 @@ import 'package:wyatt_crud_bloc/src/domain/repositories/crud_repository.dart';
|
|||||||
|
|
||||||
class UpdateAll<Model extends ObjectModel>
|
class UpdateAll<Model extends ObjectModel>
|
||||||
extends AsyncUseCase<Map<String, Object?>, void> {
|
extends AsyncUseCase<Map<String, Object?>, void> {
|
||||||
|
|
||||||
UpdateAll(this._crudRepository);
|
UpdateAll(this._crudRepository);
|
||||||
final CrudRepository<Model> _crudRepository;
|
final CrudRepository<Model> _crudRepository;
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@ import 'package:wyatt_crud_bloc/src/domain/usecases/update_all.dart';
|
|||||||
part 'crud_state.dart';
|
part 'crud_state.dart';
|
||||||
|
|
||||||
abstract class CrudCubit<Model extends ObjectModel> extends Cubit<CrudState> {
|
abstract class CrudCubit<Model extends ObjectModel> extends Cubit<CrudState> {
|
||||||
|
|
||||||
CrudCubit() : super(CrudInitial());
|
CrudCubit() : super(CrudInitial());
|
||||||
Create<Model>? get crudCreate;
|
Create<Model>? get crudCreate;
|
||||||
DeleteAll<Model>? get crudDeleteAll;
|
DeleteAll<Model>? get crudDeleteAll;
|
||||||
|
@ -36,7 +36,6 @@ class CrudOkReturn extends CrudState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class CrudError extends CrudState {
|
class CrudError extends CrudState {
|
||||||
|
|
||||||
const CrudError(this.message);
|
const CrudError(this.message);
|
||||||
final String? message;
|
final String? message;
|
||||||
|
|
||||||
@ -45,7 +44,6 @@ class CrudError extends CrudState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class CrudLoaded<T> extends CrudSuccess {
|
class CrudLoaded<T> extends CrudSuccess {
|
||||||
|
|
||||||
const CrudLoaded(this.data);
|
const CrudLoaded(this.data);
|
||||||
final T? data;
|
final T? data;
|
||||||
|
|
||||||
@ -54,7 +52,6 @@ class CrudLoaded<T> extends CrudSuccess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class CrudListLoaded<T> extends CrudSuccess {
|
class CrudListLoaded<T> extends CrudSuccess {
|
||||||
|
|
||||||
const CrudListLoaded(this.data);
|
const CrudListLoaded(this.data);
|
||||||
final List<T?> data;
|
final List<T?> data;
|
||||||
|
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
// Copyright (C) 2022 WYATT GROUP
|
// Copyright (C) 2022 WYATT GROUP
|
||||||
// Please see the AUTHORS file for details.
|
// Please see the AUTHORS file for details.
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// any later version.
|
// any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
// GNU General Public License for more details.
|
// GNU General Public License for more details.
|
||||||
//
|
//
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
@ -35,7 +35,9 @@ class App extends StatelessWidget {
|
|||||||
FormInput(formFieldEmail, const Email.pure(),
|
FormInput(formFieldEmail, const Email.pure(),
|
||||||
metadata: const FormInputMetadata<Metadata>(extra: blue)),
|
metadata: const FormInputMetadata<Metadata>(extra: blue)),
|
||||||
FormInput(
|
FormInput(
|
||||||
formFieldList, const ListOption<String>.pure(choices: ['c1', 'c2', 'c3'],defaultValue: 'c3')),
|
formFieldList,
|
||||||
|
const ListOption<String>.pure(
|
||||||
|
choices: ['c1', 'c2', 'c3'], defaultValue: 'c3')),
|
||||||
FormInput(formFieldRadio, const TextString.pure()),
|
FormInput(formFieldRadio, const TextString.pure()),
|
||||||
FormInput(formFieldPro, const Boolean.pure(),
|
FormInput(formFieldPro, const Boolean.pure(),
|
||||||
metadata: const FormInputMetadata<Metadata>(name: 'business')),
|
metadata: const FormInputMetadata<Metadata>(name: 'business')),
|
||||||
@ -65,7 +67,7 @@ class App extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
FormRepository formRepository = FormRepositoryImpl()
|
FormRepository formRepository = FormRepositoryImpl()
|
||||||
..registerForm(getNormalFormData());
|
..registerForm(getNormalFormData());
|
||||||
|
|
||||||
// FormRepository formRepository = FormRepositoryImpl()
|
// FormRepository formRepository = FormRepositoryImpl()
|
||||||
// ..registerForm(WyattFormImpl([
|
// ..registerForm(WyattFormImpl([
|
||||||
// FormInput(formFieldName, const Name.pure('Test'),
|
// FormInput(formFieldName, const Name.pure('Test'),
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user