(feat): rething conception and add missing layouts (close #97)
continuous-integration/drone/push Build is passing

This commit was merged in pull request #109.
This commit is contained in:
AN12345
2022-12-13 18:50:47 -05:00
parent e667aa06d0
commit f8f367baf6
27 changed files with 776 additions and 244 deletions
@@ -16,38 +16,26 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
abstract class AppBarLayoutCrudConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>,
T> extends CrudCubitConsumerScreen<Cubit, T> {
final String? title;
const AppBarLayoutCrudConsumerScreen({
abstract class AppBarLayoutCubitConsumerScreen<
Cubit extends bloc_base.Cubit<State>,
State extends Object> extends CubitConsumerScreen<Cubit, State> {
const AppBarLayoutCubitConsumerScreen({
this.title,
this.leading,
this.actions,
super.key,
});
final String? title;
final Widget? leading;
final List<Widget>? actions;
@override
Widget parent(BuildContext context, Widget child) => AppBarLayout(
title: title ?? 'Title',
body: child,
);
}
abstract class AppBarLayoutCrudListConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>,
T> extends CrudListCubitConsumerScreen<Cubit, T> {
final String? title;
final int? currentIndex;
const AppBarLayoutCrudListConsumerScreen({
this.title,
this.currentIndex,
});
@override
Widget parent(BuildContext context, Widget child) => AppBarLayout(
title: title ?? 'Title',
title: title,
body: child,
);
}
@@ -0,0 +1,19 @@
// Copyright (C) 2022 WYATT GROUP
// Please see the AUTHORS file for details.
//
// 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
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
export './app_bar_layout_cubit_consumer_screen.dart';
export './bottom_bar_layout_cubit_consumer_screen.dart';
export './frame_layout_cubit_consumer_screen.dart';
@@ -16,40 +16,23 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
abstract class BottomNavigationBarLayoutCrudConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>,
T> extends CrudCubitConsumerScreen<Cubit, T> {
final int? currentIndex;
const BottomNavigationBarLayoutCrudConsumerScreen({
abstract class BottomBarLayoutCubitConsumerScreen<
Cubit extends bloc_base.Cubit<State>,
State extends Object> extends CubitConsumerScreen<Cubit, State> {
const BottomBarLayoutCubitConsumerScreen({
this.currentIndex,
super.key,
});
final int? currentIndex;
@override
Widget parent(BuildContext context, Widget child) =>
BottomNavigationBarLayout(
currentIndex: currentIndex,
body: child,
currentIndex: currentIndex ?? 0,
);
}
abstract class BottomNavigationBarLayoutCrudListConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>,
T> extends CrudListCubitConsumerScreen<Cubit, T> {
final String? title;
final int? currentIndex;
const BottomNavigationBarLayoutCrudListConsumerScreen({
this.title,
this.currentIndex,
});
@override
Widget parent(BuildContext context, Widget child) =>
BottomNavigationBarLayout(
body: child,
currentIndex: currentIndex ?? 0,
);
}
@@ -14,44 +14,31 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/src/widgets/framework.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
abstract class FrameLayoutCrudConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>,
T> extends CrudCubitConsumerScreen<Cubit, T> {
final String? title;
final int? currentIndex;
const FrameLayoutCrudConsumerScreen({
abstract class FrameLayoutCubitConsumerScreen<
Cubit extends bloc_base.Cubit<State>,
State extends Object> extends CubitConsumerScreen<Cubit, State> {
const FrameLayoutCubitConsumerScreen({
this.title,
this.leading,
this.actions,
this.currentIndex,
super.key,
});
final int? currentIndex;
final String? title;
final Widget? leading;
final List<Widget>? actions;
@override
Widget parent(BuildContext context, Widget child) => FrameLayout(
title: title ?? 'Title',
title: title,
currentIndex: currentIndex,
body: child,
currentIndex: currentIndex ?? 0,
);
}
abstract class FrameLayoutCrudListConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>,
T> extends CrudListCubitConsumerScreen<Cubit, T> {
final String? title;
final int? currentIndex;
const FrameLayoutCrudListConsumerScreen({
this.title,
this.currentIndex,
});
@override
Widget parent(BuildContext context, Widget child) => FrameLayout(
title: title ?? 'Title',
body: child,
currentIndex: currentIndex ?? 0,
);
}
@@ -0,0 +1,18 @@
// Copyright (C) 2022 WYATT GROUP
// Please see the AUTHORS file for details.
//
// 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
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
export 'bases/bases.dart';
export 'crud/crud.dart';
@@ -0,0 +1,51 @@
// Copyright (C) 2022 WYATT GROUP
// Please see the AUTHORS file for details.
//
// 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
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/src/widgets/framework.dart';
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
abstract class AppBarLayoutCrudCubitConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>, T extends Object>
extends AppBarLayoutCubitConsumerScreen<Cubit, CrudState>
with CrudMixin<Cubit, CrudLoaded<T>> {
const AppBarLayoutCrudCubitConsumerScreen({
super.title,
super.leading,
super.actions,
super.key,
});
@override
Widget onBuild(BuildContext context, CrudState state) =>
crudBuilder(context, state);
}
abstract class AppBarLayoutCrudListCubitConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>, T extends Object>
extends AppBarLayoutCubitConsumerScreen<Cubit, CrudState>
with CrudMixin<Cubit, CrudListLoaded<T>> {
const AppBarLayoutCrudListCubitConsumerScreen({
super.title,
super.leading,
super.actions,
super.key,
});
@override
Widget onBuild(BuildContext context, CrudState state) =>
crudBuilder(context, state);
}
@@ -0,0 +1,47 @@
// Copyright (C) 2022 WYATT GROUP
// Please see the AUTHORS file for details.
//
// 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
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
abstract class BottomBarLayoutCrudCubitConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>, T extends Object>
extends BottomBarLayoutCubitConsumerScreen<Cubit, CrudState>
with CrudMixin<Cubit, CrudLoaded<T>> {
const BottomBarLayoutCrudCubitConsumerScreen({
super.currentIndex,
super.key,
});
@override
Widget onBuild(BuildContext context, CrudState state) =>
crudBuilder(context, state);
}
abstract class BottomBarLayoutCrudListCubitConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>, T extends Object>
extends BottomBarLayoutCubitConsumerScreen<Cubit, CrudState>
with CrudMixin<Cubit, CrudListLoaded<T>> {
const BottomBarLayoutCrudListCubitConsumerScreen({
super.currentIndex,
super.key,
});
@override
Widget onBuild(BuildContext context, CrudState state) =>
crudBuilder(context, state);
}
@@ -0,0 +1,20 @@
// Copyright (C) 2022 WYATT GROUP
// Please see the AUTHORS file for details.
//
// 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
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
export './app_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';
@@ -0,0 +1,40 @@
// Copyright (C) 2022 WYATT GROUP
// Please see the AUTHORS file for details.
//
// 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
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/material.dart';
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
abstract class CrudCubitConsumerScreen<Cubit extends bloc_base.Cubit<CrudState>,
T extends Object> extends CubitConsumerScreen<Cubit, CrudState>
with CrudMixin<Cubit, CrudLoaded<T>> {
const CrudCubitConsumerScreen({super.key});
@override
Widget onBuild(BuildContext context, CrudState state) =>
crudBuilder(context, state);
}
abstract class CrudListCubitConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>,
T extends Object> extends CubitConsumerScreen<Cubit, CrudState>
with CrudMixin<Cubit, CrudListLoaded<T>> {
const CrudListCubitConsumerScreen({super.key});
@override
Widget onBuild(BuildContext context, CrudState state) =>
crudBuilder(context, state);
}
@@ -0,0 +1,53 @@
// Copyright (C) 2022 WYATT GROUP
// Please see the AUTHORS file for details.
//
// 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
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
abstract class FrameLayoutCrudCubitConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>, T extends Object>
extends FrameLayoutCubitConsumerScreen<Cubit, CrudState>
with CrudMixin<Cubit, CrudLoaded<T>> {
const FrameLayoutCrudCubitConsumerScreen({
super.title,
super.leading,
super.actions,
super.currentIndex,
super.key,
});
@override
Widget onBuild(BuildContext context, CrudState state) =>
crudBuilder(context, state);
}
abstract class FrameLayoutCrudListCubitConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>, T extends Object>
extends FrameLayoutCubitConsumerScreen<Cubit, CrudState>
with CrudMixin<Cubit, CrudListLoaded<T>> {
const FrameLayoutCrudListCubitConsumerScreen({
super.title,
super.leading,
super.actions,
super.currentIndex,
super.key,
});
@override
Widget onBuild(BuildContext context, CrudState state) =>
crudBuilder(context, state);
}
@@ -1,61 +0,0 @@
// Copyright (C) 2022 WYATT GROUP
// Please see the AUTHORS file for details.
//
// 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
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart';
import 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart';
abstract class CrudCubitConsumerScreenBase<
Cubit extends bloc_base.Cubit<CrudState>,
SuccessState extends CrudSuccess>
extends CubitConsumerScreen<Cubit, CrudState> {
const CrudCubitConsumerScreenBase({super.key});
Widget errorBuilder(BuildContext context, CrudError state) =>
context.components.errorWidget?.configure(error: state.message) ??
const SizedBox.shrink();
Widget loadingBuilder(BuildContext context, CrudLoading state) =>
context.components.loadingWidget ?? const SizedBox.shrink();
Widget initialBuilder(BuildContext context, CrudInitial state) =>
const SizedBox.shrink();
Widget successBuilder(BuildContext context, SuccessState state);
@override
Widget onBuild(BuildContext context, CrudState state) =>
CrudBuilder<CrudInitial, CrudLoading, SuccessState, CrudError>(
errorBuilder: errorBuilder,
loadingBuilder: loadingBuilder,
initialBuilder: initialBuilder,
state: state,
builder: successBuilder,
);
}
abstract class CrudCubitConsumerScreen<Cubit extends bloc_base.Cubit<CrudState>,
T> extends CrudCubitConsumerScreenBase<Cubit, CrudLoaded<T>> {
const CrudCubitConsumerScreen();
}
abstract class CrudListCubitConsumerScreen<
Cubit extends bloc_base.Cubit<CrudState>,
T> extends CrudCubitConsumerScreenBase<Cubit, CrudListLoaded<T>> {
const CrudListCubitConsumerScreen();
}