diff --git a/packages/wyatt_bloc_layout/example/lib/main.dart b/packages/wyatt_bloc_layout/example/lib/main.dart index e5f0207a..4542215e 100644 --- a/packages/wyatt_bloc_layout/example/lib/main.dart +++ b/packages/wyatt_bloc_layout/example/lib/main.dart @@ -62,13 +62,13 @@ class MyApp extends StatelessWidget { Expanded( child: BlocProvider( create: (_) => ExampleCubit()..run(), - child: const ExampleFrameLayoutCrudConsumer(), + child: ExampleFrameLayoutCrudConsumer(), ), ), Expanded( child: BlocProvider( create: (_) => ExampleCubit()..runList(), - child: const ExampleFrameLayoutCrudListConsumer(), + child: ExampleFrameLayoutCrudListConsumer(), ), ), ], @@ -82,7 +82,7 @@ class MyApp extends StatelessWidget { } class ExampleCrudStateManagement - extends CrudCubitConsumerScreen { + extends CubitScreenCrudItemBase { const ExampleCrudStateManagement({super.key}); @override @@ -91,10 +91,13 @@ class ExampleCrudStateManagement @override Widget successBuilder(BuildContext context, CrudLoaded state) => Center(child: Text(state.data ?? 'errors')); + + @override + ExampleCubit create(BuildContext context) => ExampleCubit()..run(); } class ExampleListCrudStateManagement - extends CrudListCubitConsumerScreen { + extends CubitScreenCrudListBase { const ExampleListCrudStateManagement({super.key}); @override @@ -106,27 +109,35 @@ class ExampleListCrudStateManagement mainAxisAlignment: MainAxisAlignment.center, children: state.data.map((e) => Text(e ?? 'error')).toList(), ); + + @override + ExampleCubit create(BuildContext context) => ExampleCubit()..run(); } class ExampleFrameLayoutCrudConsumer - extends FrameLayoutCrudCubitConsumerScreen { - const ExampleFrameLayoutCrudConsumer({super.key}) + extends FrameLayoutCubitScreenCrudItem { + ExampleFrameLayoutCrudConsumer({super.key}) : super( - title: 'Example Title', - currentIndex: 0, + customAppBar: (bar) => bar?.copyWith.title( + 'Example Title'.wrap(), + ), ); @override Widget successBuilder(BuildContext context, CrudLoaded state) => Center(child: Text(state.data ?? 'errors')); + + @override + ExampleCubit create(BuildContext context) => ExampleCubit()..run(); } class ExampleFrameLayoutCrudListConsumer - extends FrameLayoutCrudListCubitConsumerScreen { - const ExampleFrameLayoutCrudListConsumer({super.key}) + extends FrameLayoutCubitScreenCrudList { + ExampleFrameLayoutCrudListConsumer({super.key}) : super( - title: 'Example Title', - currentIndex: 0, + customAppBar: (bar) => bar?.copyWith.title( + 'Example Title'.wrap(), + ), ); @override @@ -135,4 +146,7 @@ class ExampleFrameLayoutCrudListConsumer mainAxisAlignment: MainAxisAlignment.center, children: state.data.map((e) => Text(e ?? 'error')).toList(), ); + + @override + ExampleCubit create(BuildContext context) => ExampleCubit()..run(); } diff --git a/packages/wyatt_bloc_layout/lib/src/core/core.dart b/packages/wyatt_bloc_layout/lib/src/core/core.dart index e215b540..2916446f 100644 --- a/packages/wyatt_bloc_layout/lib/src/core/core.dart +++ b/packages/wyatt_bloc_layout/lib/src/core/core.dart @@ -15,3 +15,4 @@ // along with this program. If not, see . export './crud_cubit_consumer_screen_mixin.dart'; +export './mixins/mixins.dart'; diff --git a/packages/wyatt_bloc_layout/lib/src/core/mixins/gird_view_mixin.dart b/packages/wyatt_bloc_layout/lib/src/core/mixins/gird_view_mixin.dart new file mode 100644 index 00000000..696ae8e9 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/core/mixins/gird_view_mixin.dart @@ -0,0 +1,35 @@ +// 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 . + +import 'package:flutter/material.dart'; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +mixin GridLayoutMixin { + Widget gridChild(BuildContext context, SuccessType? successType); + + double get verticalGap => 30; + double get horizontalGap => 30; + + Widget successBuilder( + BuildContext context, + CrudListLoaded state, + ) => + GridLayout( + verticalGap: verticalGap, + horizontalGap: horizontalGap, + children: state.data.map((e) => gridChild(context, e)).toList(), + ); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/consumers.dart b/packages/wyatt_bloc_layout/lib/src/core/mixins/mixins.dart similarity index 93% rename from packages/wyatt_bloc_layout/lib/src/presentation/consumers/consumers.dart rename to packages/wyatt_bloc_layout/lib/src/core/mixins/mixins.dart index 7cac2b7f..d5b9315f 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/consumers.dart +++ b/packages/wyatt_bloc_layout/lib/src/core/mixins/mixins.dart @@ -14,5 +14,4 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export 'bases/bases.dart'; -export 'crud/crud.dart'; +export './gird_view_mixin.dart'; diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_bloc_layout.dart b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_bloc_layout.dart new file mode 100644 index 00000000..24940e8a --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_bloc_layout.dart @@ -0,0 +1,22 @@ +// 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 . + +export './bottom_navigation_bar_bloc_layout.dart'; +export './bottom_navigation_bar_grid_layout_cubit_screen_crud_list.dart'; +export './bottom_navigation_bar_layout_cubit_screen.dart'; +export './bottom_navigation_bar_layout_cubit_screen_crud.dart'; +export './bottom_navigation_bar_layout_cubit_screen_crud_item.dart'; +export './bottom_navigation_bar_layout_cubit_screen_crud_list.dart'; diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_grid_layout_cubit_screen_crud_list.dart b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_grid_layout_cubit_screen_crud_list.dart new file mode 100644 index 00000000..099d6b79 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_grid_layout_cubit_screen_crud_list.dart @@ -0,0 +1,29 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class BottomNavigationBarGridLayoutCubitScreenCrudList< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends BottomNavigationBarLayoutCubitScreenCrudList + with GridLayoutMixin { + const BottomNavigationBarGridLayoutCubitScreenCrudList({ + super.custom, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/bottom_bar_layout_cubit_consumer_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen.dart similarity index 75% rename from packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/bottom_bar_layout_cubit_consumer_screen.dart rename to packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen.dart index 0b2cab99..c729a0f6 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/bottom_bar_layout_cubit_consumer_screen.dart +++ b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen.dart @@ -19,20 +19,23 @@ import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; -abstract class BottomBarLayoutCubitConsumerScreen< +abstract class BottomNavigationBarLayoutCubitScreen< Cubit extends bloc_base.Cubit, - State extends Object> extends CubitConsumerScreen { - const BottomBarLayoutCubitConsumerScreen({ - this.currentIndex, + State extends Object> extends CubitScreenBase { + const BottomNavigationBarLayoutCubitScreen({ + this.custom, + this.height = 60, super.key, }); - final int? currentIndex; + final double height; + final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)? + custom; @override Widget parent(BuildContext context, Widget child) => BottomNavigationBarLayout( - currentIndex: currentIndex, + custom: custom, body: child, ); } diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen_crud.dart b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen_crud.dart new file mode 100644 index 00000000..16cc1abf --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen_crud.dart @@ -0,0 +1,35 @@ +// 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 . + +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 BottomNavigationBarLayoutCubitScreenCrud< + Cubit extends bloc_base.Cubit, + CrudSuccessState extends CrudSuccess> + extends BottomNavigationBarLayoutCubitScreen + with CrudMixin { + const BottomNavigationBarLayoutCubitScreenCrud({ + super.custom, + super.height, + super.key, + }); + + @override + Widget onBuild(BuildContext context, CrudState state) => + crudBuilder(context, state); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen_crud_item.dart b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen_crud_item.dart new file mode 100644 index 00000000..f2bbdb07 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen_crud_item.dart @@ -0,0 +1,29 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class BottomNavigationBarLayoutCubitScreenCrudItem< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends BottomNavigationBarLayoutCubitScreenCrud> { + const BottomNavigationBarLayoutCubitScreenCrudItem({ + super.custom, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen_crud_list.dart b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen_crud_list.dart new file mode 100644 index 00000000..cce7f2a4 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/bottom_navigation_bar_bloc_layout/bottom_navigation_bar_layout_cubit_screen_crud_list.dart @@ -0,0 +1,29 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class BottomNavigationBarLayoutCubitScreenCrudList< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends BottomNavigationBarLayoutCubitScreenCrud> { + const BottomNavigationBarLayoutCubitScreenCrudList({ + super.custom, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/frame_layout_cubit_consumer_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/frame_layout_cubit_consumer_screen.dart deleted file mode 100644 index 71a5e661..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/frame_layout_cubit_consumer_screen.dart +++ /dev/null @@ -1,44 +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 . - -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 FrameLayoutCubitConsumerScreen< - Cubit extends bloc_base.Cubit, - State extends Object> extends CubitConsumerScreen { - const FrameLayoutCubitConsumerScreen({ - this.title, - this.leading, - this.actions, - this.currentIndex, - super.key, - }); - - final int? currentIndex; - final String? title; - final Widget? leading; - final List? actions; - - @override - Widget parent(BuildContext context, Widget child) => FrameLayout( - title: title, - currentIndex: currentIndex, - body: child, - ); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/app_bar_layout_crud_cubit_consumer_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/app_bar_layout_crud_cubit_consumer_screen.dart deleted file mode 100644 index 5e16c8b9..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/app_bar_layout_crud_cubit_consumer_screen.dart +++ /dev/null @@ -1,51 +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 . - -import 'package:flutter/widgets.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, T extends Object?> - extends AppBarLayoutCubitConsumerScreen - with CrudMixin> { - 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, T extends Object?> - extends AppBarLayoutCubitConsumerScreen - with CrudMixin> { - const AppBarLayoutCrudListCubitConsumerScreen({ - super.title, - super.leading, - super.actions, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/bottom_bar_layout_crud_cubit_consumer_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/bottom_bar_layout_crud_cubit_consumer_screen.dart deleted file mode 100644 index 2cfd586b..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/bottom_bar_layout_crud_cubit_consumer_screen.dart +++ /dev/null @@ -1,47 +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 . - -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, T extends Object?> - extends BottomBarLayoutCubitConsumerScreen - with CrudMixin> { - const BottomBarLayoutCrudCubitConsumerScreen({ - super.currentIndex, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} - -abstract class BottomBarLayoutCrudListCubitConsumerScreen< - Cubit extends bloc_base.Cubit, T extends Object?> - extends BottomBarLayoutCubitConsumerScreen - with CrudMixin> { - const BottomBarLayoutCrudListCubitConsumerScreen({ - super.currentIndex, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/crud_cubit_consumer_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/crud_cubit_consumer_screen.dart deleted file mode 100644 index 9a36e4a8..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/crud_cubit_consumer_screen.dart +++ /dev/null @@ -1,40 +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 . - -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 CrudCubitConsumerScreen, - T extends Object?> extends CubitConsumerScreen - with CrudMixin> { - const CrudCubitConsumerScreen({super.key}); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} - -abstract class CrudListCubitConsumerScreen< - Cubit extends bloc_base.Cubit, - T extends Object?> extends CubitConsumerScreen - with CrudMixin> { - const CrudListCubitConsumerScreen({super.key}); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/frame_layout_crud_cubit_consumer_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/frame_layout_crud_cubit_consumer_screen.dart deleted file mode 100644 index 48d5c73d..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/frame_layout_crud_cubit_consumer_screen.dart +++ /dev/null @@ -1,53 +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 . - -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, T extends Object?> - extends FrameLayoutCubitConsumerScreen - with CrudMixin> { - 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, T extends Object?> - extends FrameLayoutCubitConsumerScreen - with CrudMixin> { - const FrameLayoutCrudListCubitConsumerScreen({ - super.title, - super.leading, - super.actions, - super.currentIndex, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_base.dart b/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_base.dart new file mode 100644 index 00000000..b4848316 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_base.dart @@ -0,0 +1,23 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class CubitScreenBase, + State extends Object> extends CubitScreen { + const CubitScreenBase({super.key}); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_crud_base.dart b/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_crud_base.dart new file mode 100644 index 00000000..a113c5ad --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_crud_base.dart @@ -0,0 +1,30 @@ +// 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 . + +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 CubitScreenCrudBase, + CrudSuccessState extends CrudSuccess> + extends CubitScreenBase + with CrudMixin { + const CubitScreenCrudBase({super.key}); + + @override + Widget onBuild(BuildContext context, CrudState state) => + crudBuilder(context, state); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_crud_item_base.dart b/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_crud_item_base.dart new file mode 100644 index 00000000..5e81a799 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_crud_item_base.dart @@ -0,0 +1,23 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class CubitScreenCrudItemBase, + T extends Object?> extends CubitScreenCrudBase> { + const CubitScreenCrudItemBase({super.key}); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_crud_list_base.dart b/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_crud_list_base.dart new file mode 100644 index 00000000..d641b6b5 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/cubit_screen_crud_list_base.dart @@ -0,0 +1,23 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class CubitScreenCrudListBase, + T extends Object?> extends CubitScreenCrudBase> { + const CubitScreenCrudListBase({super.key}); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/crud.dart b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_bloc_layout.dart similarity index 71% rename from packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/crud.dart rename to packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_bloc_layout.dart index a444cf2b..3233fe28 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/crud/crud.dart +++ b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_bloc_layout.dart @@ -14,7 +14,9 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export './app_bar_layout_crud_cubit_consumer_screen.dart'; -export './bottom_bar_layout_crud_cubit_consumer_screen.dart'; -export './crud_cubit_consumer_screen.dart'; -export './frame_layout_crud_cubit_consumer_screen.dart'; +export './frame_bloc_layout.dart'; +export './frame_grid_layout_cubit_screen_crud_list.dart'; +export './frame_layout_cubit_screen.dart'; +export './frame_layout_cubit_screen_crud.dart'; +export './frame_layout_cubit_screen_crud_item.dart'; +export './frame_layout_cubit_screen_crud_list.dart'; diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_grid_layout_cubit_screen_crud_list.dart b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_grid_layout_cubit_screen_crud_list.dart new file mode 100644 index 00000000..e62fea8c --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_grid_layout_cubit_screen_crud_list.dart @@ -0,0 +1,30 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class FrameLayoutGridCubitScreenCrudList< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends FrameLayoutCubitScreenCrudList + with GridLayoutMixin { + const FrameLayoutGridCubitScreenCrudList({ + super.customAppBar, + super.customBottomNavBar, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/frame_layout_cubit_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen.dart similarity index 71% rename from packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/frame_layout_cubit_screen.dart rename to packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen.dart index 769664a2..d8631d8e 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/frame_layout_cubit_screen.dart +++ b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen.dart @@ -20,24 +20,24 @@ import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; abstract class FrameLayoutCubitScreen, - State extends Object> extends CubitScreen { + State extends Object> extends CubitScreenBase { const FrameLayoutCubitScreen({ - this.title, - this.leading, - this.actions, - this.currentIndex, + this.customAppBar, + this.customBottomNavBar, + this.height = 60, super.key, }); - final int? currentIndex; - final String? title; - final Widget? leading; - final List? actions; + final TopAppBarComponent? Function(TopAppBarComponent?)? customAppBar; + final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)? + customBottomNavBar; + final double height; @override Widget parent(BuildContext context, Widget child) => FrameLayout( - title: title, - currentIndex: currentIndex, + customAppBar: customAppBar, + customBottomNavBar: customBottomNavBar, + height: height, body: child, ); } diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen_crud.dart b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen_crud.dart new file mode 100644 index 00000000..a498490b --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen_crud.dart @@ -0,0 +1,36 @@ +// 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 . + +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 FrameLayoutCubitScreenCrud< + Cubit extends bloc_base.Cubit, + CrudSuccessState extends CrudSuccess> + extends FrameLayoutCubitScreen + with CrudMixin { + const FrameLayoutCubitScreenCrud({ + super.customAppBar, + super.customBottomNavBar, + super.height, + super.key, + }); + + @override + Widget onBuild(BuildContext context, CrudState state) => + crudBuilder(context, state); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen_crud_item.dart b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen_crud_item.dart new file mode 100644 index 00000000..92db37fa --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen_crud_item.dart @@ -0,0 +1,29 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class FrameLayoutCubitScreenCrudItem< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends FrameLayoutCubitScreenCrud> { + const FrameLayoutCubitScreenCrudItem({ + super.customAppBar, + super.customBottomNavBar, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen_crud_list.dart b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen_crud_list.dart new file mode 100644 index 00000000..8c38994a --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/frame_bloc_layout/frame_layout_cubit_screen_crud_list.dart @@ -0,0 +1,29 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class FrameLayoutCubitScreenCrudList< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends FrameLayoutCubitScreenCrud> { + const FrameLayoutCubitScreenCrudList({ + super.customAppBar, + super.customBottomNavBar, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/grid_cubit_screen_crud_list_base.dart b/packages/wyatt_bloc_layout/lib/src/presentation/grid_cubit_screen_crud_list_base.dart new file mode 100644 index 00000000..28931c40 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/grid_cubit_screen_crud_list_base.dart @@ -0,0 +1,24 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class GridCubitScreenCrudListBase< + Cubit extends bloc_base.Cubit, T extends Object?> + extends CubitScreenCrudListBase with GridLayoutMixin { + const GridCubitScreenCrudListBase({super.key}); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/presentation.dart b/packages/wyatt_bloc_layout/lib/src/presentation/presentation.dart index f5c14cde..61e6c26b 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/presentation.dart +++ b/packages/wyatt_bloc_layout/lib/src/presentation/presentation.dart @@ -14,5 +14,11 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export 'consumers/consumers.dart'; -export 'screens/screens.dart'; +export './bottom_navigation_bar_bloc_layout/bottom_navigation_bar_bloc_layout.dart'; +export './cubit_screen_base.dart'; +export './cubit_screen_crud_base.dart'; +export './cubit_screen_crud_item_base.dart'; +export './cubit_screen_crud_list_base.dart'; +export './frame_bloc_layout/frame_bloc_layout.dart'; +export './top_app_bar_bloc_layout/top_app_bar_bloc_layout.dart'; +export './top_navigation_bar_bloc_layout/top_navigation_bar_bloc_layout.dart'; diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/app_bar_layout_crud_cubit_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/app_bar_layout_crud_cubit_screen.dart deleted file mode 100644 index 4cda2415..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/app_bar_layout_crud_cubit_screen.dart +++ /dev/null @@ -1,51 +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 . - -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 AppBarLayoutCrudCubitScreen< - Cubit extends bloc_base.Cubit, - T extends Object?> extends AppBarLayoutCubitScreen - with CrudMixin> { - const AppBarLayoutCrudCubitScreen({ - super.title, - super.leading, - super.actions, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} - -abstract class AppBarLayoutCrudListCubitScreen< - Cubit extends bloc_base.Cubit, - T extends Object?> extends AppBarLayoutCubitScreen - with CrudMixin> { - const AppBarLayoutCrudListCubitScreen({ - super.title, - super.leading, - super.actions, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/bottom_bar_layout_crud_cubit_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/bottom_bar_layout_crud_cubit_screen.dart deleted file mode 100644 index 5e79311d..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/bottom_bar_layout_crud_cubit_screen.dart +++ /dev/null @@ -1,47 +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 . - -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 BottomBarLayoutCrudCubitScreen< - Cubit extends bloc_base.Cubit, - T extends Object?> extends BottomBarLayoutCubitScreen - with CrudMixin> { - const BottomBarLayoutCrudCubitScreen({ - super.currentIndex, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} - -abstract class BottomBarLayoutCrudListCubitScreen< - Cubit extends bloc_base.Cubit, - T extends Object?> extends BottomBarLayoutCubitScreen - with CrudMixin> { - const BottomBarLayoutCrudListCubitScreen({ - super.currentIndex, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/crud.dart b/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/crud.dart deleted file mode 100644 index 40e3aca4..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/crud.dart +++ /dev/null @@ -1,20 +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 . - -export './crud_cubit_screen.dart'; -export 'app_bar_layout_crud_cubit_screen.dart'; -export 'bottom_bar_layout_crud_cubit_screen.dart'; -export 'frame_layout_crud_cubit_screen.dart'; diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/crud_cubit_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/crud_cubit_screen.dart deleted file mode 100644 index b256af58..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/crud_cubit_screen.dart +++ /dev/null @@ -1,39 +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 . - -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 CrudCubitScreen, - T extends Object?> extends CubitScreen - with CrudMixin> { - const CrudCubitScreen({super.key}); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} - -abstract class CrudListCubitScreen, - T extends Object?> extends CubitScreen - with CrudMixin> { - const CrudListCubitScreen({super.key}); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/frame_layout_crud_cubit_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/frame_layout_crud_cubit_screen.dart deleted file mode 100644 index 2f738e5d..00000000 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/crud/frame_layout_crud_cubit_screen.dart +++ /dev/null @@ -1,53 +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 . - -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 FrameLayoutCrudCubitScreen< - Cubit extends bloc_base.Cubit, - T extends Object?> extends FrameLayoutCubitScreen - with CrudMixin> { - const FrameLayoutCrudCubitScreen({ - super.title, - super.leading, - super.actions, - super.currentIndex, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} - -abstract class FrameLayoutCrudListCubitScreen< - Cubit extends bloc_base.Cubit, - T extends Object?> extends FrameLayoutCubitScreen - with CrudMixin> { - const FrameLayoutCrudListCubitScreen({ - super.title, - super.leading, - super.actions, - super.currentIndex, - super.key, - }); - - @override - Widget onBuild(BuildContext context, CrudState state) => - crudBuilder(context, state); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_bloc_layout.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_bloc_layout.dart new file mode 100644 index 00000000..6cc49ed5 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_bloc_layout.dart @@ -0,0 +1,22 @@ +// 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 . + +export './top_app_bar_bloc_layout.dart'; +export './top_app_bar_grid_layout_cubit_screen_crud_list.dart'; +export './top_app_bar_layout_cubit_screen.dart'; +export './top_app_bar_layout_cubit_screen_crud.dart'; +export './top_app_bar_layout_cubit_screen_crud_item.dart'; +export './top_app_bar_layout_cubit_screen_crud_list.dart'; diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_grid_layout_cubit_screen_crud_list.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_grid_layout_cubit_screen_crud_list.dart new file mode 100644 index 00000000..efc7ecdc --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_grid_layout_cubit_screen_crud_list.dart @@ -0,0 +1,29 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class TopAppBarGridLayoutCubitScreenCrudList< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends TopAppBarLayoutCubitScreenCrudList + with GridLayoutMixin { + const TopAppBarGridLayoutCubitScreenCrudList({ + super.custom, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/bottom_bar_layout_cubit_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen.dart similarity index 69% rename from packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/bottom_bar_layout_cubit_screen.dart rename to packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen.dart index d864dbab..80479742 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/bottom_bar_layout_cubit_screen.dart +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen.dart @@ -19,19 +19,21 @@ import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; -abstract class BottomBarLayoutCubitScreen, - State extends Object> extends CubitScreen { - const BottomBarLayoutCubitScreen({ - this.currentIndex, +abstract class TopAppBarLayoutCubitScreen, + State extends Object> extends CubitScreenBase { + const TopAppBarLayoutCubitScreen({ + this.custom, + this.height = 60, super.key, }); - final int? currentIndex; + final double height; + final TopAppBarComponent? Function(TopAppBarComponent?)? custom; @override - Widget parent(BuildContext context, Widget child) => - BottomNavigationBarLayout( - currentIndex: currentIndex, + Widget parent(BuildContext context, Widget child) => TopAppBarLayout( + height: height, + custom: custom, body: child, ); } diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/app_bar_layout_cubit_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen_crud.dart similarity index 68% rename from packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/app_bar_layout_cubit_screen.dart rename to packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen_crud.dart index ce82fccb..1de4081a 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/app_bar_layout_cubit_screen.dart +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen_crud.dart @@ -16,25 +16,20 @@ 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 AppBarLayoutCubitScreen, - State extends Object> extends CubitScreen { - const AppBarLayoutCubitScreen({ - this.title, - this.leading, - this.actions, +abstract class TopAppBarLayoutCubitScreenCrud< + Cubit extends bloc_base.Cubit, + CrudSuccessState extends CrudSuccess> + extends TopAppBarLayoutCubitScreen + with CrudMixin { + const TopAppBarLayoutCubitScreenCrud({ + super.custom, + super.height, super.key, }); - final String? title; - final Widget? leading; - final List? actions; - @override - Widget parent(BuildContext context, Widget child) => AppBarLayout( - title: title, - body: child, - ); + Widget onBuild(BuildContext context, CrudState state) => + crudBuilder(context, state); } diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen_crud_item.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen_crud_item.dart new file mode 100644 index 00000000..9e90c286 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen_crud_item.dart @@ -0,0 +1,28 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class TopAppBarLayoutCubitScreenCrudItem< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends TopAppBarLayoutCubitScreenCrud> { + const TopAppBarLayoutCubitScreenCrudItem({ + super.custom, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen_crud_list.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen_crud_list.dart new file mode 100644 index 00000000..9bc6047d --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_app_bar_bloc_layout/top_app_bar_layout_cubit_screen_crud_list.dart @@ -0,0 +1,28 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class TopAppBarLayoutCubitScreenCrudList< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends TopAppBarLayoutCubitScreenCrud> { + const TopAppBarLayoutCubitScreenCrudList({ + super.custom, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_bloc_layout.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_bloc_layout.dart new file mode 100644 index 00000000..7697dd49 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_bloc_layout.dart @@ -0,0 +1,22 @@ +// 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 . + +export './top_navigation_bar_bloc_layout.dart'; +export './top_navigation_bar_grid_layout_cubit_screen_crud_list.dart'; +export './top_navigation_bar_layout_cubit_screen.dart'; +export './top_navigation_bar_layout_cubit_screen_crud.dart'; +export './top_navigation_bar_layout_cubit_screen_crud_item.dart'; +export './top_navigation_bar_layout_cubit_screen_crud_list.dart'; diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_grid_layout_cubit_screen_crud_list.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_grid_layout_cubit_screen_crud_list.dart new file mode 100644 index 00000000..238079ba --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_grid_layout_cubit_screen_crud_list.dart @@ -0,0 +1,29 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class TopNavigationBarGridLayoutCubitScreenCrudList< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends TopNavigationBarLayoutCubitScreenCrudList + with GridLayoutMixin { + const TopNavigationBarGridLayoutCubitScreenCrudList({ + super.custom, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/app_bar_layout_cubit_consumer_screen.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen.dart similarity index 69% rename from packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/app_bar_layout_cubit_consumer_screen.dart rename to packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen.dart index d12706cd..7978b76f 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/app_bar_layout_cubit_consumer_screen.dart +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen.dart @@ -19,23 +19,22 @@ import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; -abstract class AppBarLayoutCubitConsumerScreen< +abstract class TopNavigationBarLayoutCubitScreen< Cubit extends bloc_base.Cubit, - State extends Object> extends CubitConsumerScreen { - const AppBarLayoutCubitConsumerScreen({ - this.title, - this.leading, - this.actions, + State extends Object> extends CubitScreenBase { + const TopNavigationBarLayoutCubitScreen({ + this.custom, + this.height = 60, super.key, }); - final String? title; - final Widget? leading; - final List? actions; + final double height; + final TopNavigationBarComponent? Function(TopNavigationBarComponent?)? custom; @override - Widget parent(BuildContext context, Widget child) => AppBarLayout( - title: title, + Widget parent(BuildContext context, Widget child) => TopNavigationBarLayout( + height: height, + custom: custom, body: child, ); } diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen_crud.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen_crud.dart new file mode 100644 index 00000000..65bd7bff --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen_crud.dart @@ -0,0 +1,35 @@ +// 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 . + +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 TopNavigationBarLayoutCubitScreenCrud< + Cubit extends bloc_base.Cubit, + CrudSuccessState extends CrudSuccess> + extends TopNavigationBarLayoutCubitScreen + with CrudMixin { + const TopNavigationBarLayoutCubitScreenCrud({ + super.custom, + super.height, + super.key, + }); + + @override + Widget onBuild(BuildContext context, CrudState state) => + crudBuilder(context, state); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen_crud_item.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen_crud_item.dart new file mode 100644 index 00000000..6b4c022b --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen_crud_item.dart @@ -0,0 +1,29 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class TopNavigationBarLayoutCubitScreenCrudItem< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends TopNavigationBarLayoutCubitScreenCrud> { + const TopNavigationBarLayoutCubitScreenCrudItem({ + super.custom, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen_crud_list.dart b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen_crud_list.dart new file mode 100644 index 00000000..0b04c6f2 --- /dev/null +++ b/packages/wyatt_bloc_layout/lib/src/presentation/top_navigation_bar_bloc_layout/top_navigation_bar_layout_cubit_screen_crud_list.dart @@ -0,0 +1,29 @@ +// 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 . + +import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base; +import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart'; + +abstract class TopNavigationBarLayoutCubitScreenCrudList< + Cubit extends bloc_base.Cubit, SuccessType extends Object?> + extends TopNavigationBarLayoutCubitScreenCrud> { + const TopNavigationBarLayoutCubitScreenCrudList({ + super.custom, + super.height = 60, + super.key, + }); +} diff --git a/packages/wyatt_bloc_layout/models/class-models.puml b/packages/wyatt_bloc_layout/models/class-models.puml index 3a557834..60bf99ae 100644 --- a/packages/wyatt_bloc_layout/models/class-models.puml +++ b/packages/wyatt_bloc_layout/models/class-models.puml @@ -1,6 +1,11 @@ -@startuml +@startuml Class Model set namespaceSeparator :: +abstract class "wyatt_bloc_layout::src::core::mixins::gird_view_mixin.dart::GridLayoutMixin" { + +Widget gridChild() + +Widget successBuilder() +} + abstract class "wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" { +Widget errorBuilder() +Widget loadingBuilder() @@ -9,173 +14,163 @@ abstract class "wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.d +Widget crudBuilder() } -abstract class "wyatt_bloc_layout::src::presentation::screens::bases::bottom_bar_layout_cubit_screen.dart::BottomBarLayoutCubitScreen" { - +int? currentIndex +abstract class "wyatt_bloc_layout::src::presentation::cubit_screen_base.dart::CubitScreenBase" { +} + +"wyatt_bloc_helper::src::cubit.dart::CubitScreen" <|-- "wyatt_bloc_layout::src::presentation::cubit_screen_base.dart::CubitScreenBase" + +abstract class "wyatt_bloc_layout::src::presentation::cubit_screen_crud_list_base.dart::CubitScreenCrudListBase" { +} + +"wyatt_bloc_layout::src::presentation::cubit_screen_crud_base.dart::CubitScreenCrudBase" <|-- "wyatt_bloc_layout::src::presentation::cubit_screen_crud_list_base.dart::CubitScreenCrudListBase" + +abstract class "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud.dart::FrameLayoutCubitScreenCrud" { + +Widget onBuild() +} + +"wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud.dart::FrameLayoutCubitScreenCrud" +"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud.dart::FrameLayoutCubitScreenCrud" + +abstract class "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud_list.dart::FrameLayoutCubitScreenCrudList" { +} + +"wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud.dart::FrameLayoutCubitScreenCrud" <|-- "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud_list.dart::FrameLayoutCubitScreenCrudList" + +abstract class "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" { + +TopAppBarComponent? Function(TopAppBarComponent?)? customAppBar + +BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)? customBottomNavBar + +double height +Widget parent() } -"wyatt_bloc_helper::src::cubit.dart::CubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::bases::bottom_bar_layout_cubit_screen.dart::BottomBarLayoutCubitScreen" +"wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" o-- "null::TopAppBarComponent Function(TopAppBarComponent)" +"wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" o-- "null::BottomNavigationBarComponent Function(BottomNavigationBarComponent)" +"wyatt_bloc_layout::src::presentation::cubit_screen_base.dart::CubitScreenBase" <|-- "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" -abstract class "wyatt_bloc_layout::src::presentation::screens::bases::app_bar_layout_cubit_screen.dart::AppBarLayoutCubitScreen" { - +String? title - +Widget? leading - +List? actions +abstract class "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_grid_layout_cubit_screen_crud_list.dart::FrameLayoutGridCubitScreenCrudList" { +} + +"wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud_list.dart::FrameLayoutCubitScreenCrudList" <|-- "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_grid_layout_cubit_screen_crud_list.dart::FrameLayoutGridCubitScreenCrudList" +"wyatt_bloc_layout::src::core::mixins::gird_view_mixin.dart::GridLayoutMixin" <|-- "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_grid_layout_cubit_screen_crud_list.dart::FrameLayoutGridCubitScreenCrudList" + +abstract class "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud_item.dart::FrameLayoutCubitScreenCrudItem" { +} + +"wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud.dart::FrameLayoutCubitScreenCrud" <|-- "wyatt_bloc_layout::src::presentation::frame_bloc_layout::frame_layout_cubit_screen_crud_item.dart::FrameLayoutCubitScreenCrudItem" + +abstract class "wyatt_bloc_layout::src::presentation::cubit_screen_crud_item_base.dart::CubitScreenCrudItemBase" { +} + +"wyatt_bloc_layout::src::presentation::cubit_screen_crud_base.dart::CubitScreenCrudBase" <|-- "wyatt_bloc_layout::src::presentation::cubit_screen_crud_item_base.dart::CubitScreenCrudItemBase" + +abstract class "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud_list.dart::TopAppBarLayoutCubitScreenCrudList" { +} + +"wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud.dart::TopAppBarLayoutCubitScreenCrud" <|-- "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud_list.dart::TopAppBarLayoutCubitScreenCrudList" + +abstract class "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen.dart::TopAppBarLayoutCubitScreen" { + +double height + +TopAppBarComponent? Function(TopAppBarComponent?)? custom +Widget parent() } -"wyatt_bloc_layout::src::presentation::screens::bases::app_bar_layout_cubit_screen.dart::AppBarLayoutCubitScreen" o-- "flutter::src::widgets::framework.dart::Widget" -"wyatt_bloc_helper::src::cubit.dart::CubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::bases::app_bar_layout_cubit_screen.dart::AppBarLayoutCubitScreen" +"wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen.dart::TopAppBarLayoutCubitScreen" o-- "null::TopAppBarComponent Function(TopAppBarComponent)" +"wyatt_bloc_layout::src::presentation::cubit_screen_base.dart::CubitScreenBase" <|-- "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen.dart::TopAppBarLayoutCubitScreen" -abstract class "wyatt_bloc_layout::src::presentation::screens::bases::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" { - +int? currentIndex - +String? title - +Widget? leading - +List? actions +abstract class "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud.dart::TopAppBarLayoutCubitScreenCrud" { + +Widget onBuild() +} + +"wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen.dart::TopAppBarLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud.dart::TopAppBarLayoutCubitScreenCrud" +"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud.dart::TopAppBarLayoutCubitScreenCrud" + +abstract class "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_grid_layout_cubit_screen_crud_list.dart::TopAppBarGridLayoutCubitScreenCrudList" { +} + +"wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud_list.dart::TopAppBarLayoutCubitScreenCrudList" <|-- "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_grid_layout_cubit_screen_crud_list.dart::TopAppBarGridLayoutCubitScreenCrudList" +"wyatt_bloc_layout::src::core::mixins::gird_view_mixin.dart::GridLayoutMixin" <|-- "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_grid_layout_cubit_screen_crud_list.dart::TopAppBarGridLayoutCubitScreenCrudList" + +abstract class "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud_item.dart::TopAppBarLayoutCubitScreenCrudItem" { +} + +"wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud.dart::TopAppBarLayoutCubitScreenCrud" <|-- "wyatt_bloc_layout::src::presentation::top_app_bar_bloc_layout::top_app_bar_layout_cubit_screen_crud_item.dart::TopAppBarLayoutCubitScreenCrudItem" + +abstract class "wyatt_bloc_layout::src::presentation::grid_cubit_screen_crud_list_base.dart::GridCubitScreenCrudListBase" { +} + +"wyatt_bloc_layout::src::presentation::cubit_screen_crud_list_base.dart::CubitScreenCrudListBase" <|-- "wyatt_bloc_layout::src::presentation::grid_cubit_screen_crud_list_base.dart::GridCubitScreenCrudListBase" +"wyatt_bloc_layout::src::core::mixins::gird_view_mixin.dart::GridLayoutMixin" <|-- "wyatt_bloc_layout::src::presentation::grid_cubit_screen_crud_list_base.dart::GridCubitScreenCrudListBase" + +abstract class "wyatt_bloc_layout::src::presentation::cubit_screen_crud_base.dart::CubitScreenCrudBase" { + +Widget onBuild() +} + +"wyatt_bloc_layout::src::presentation::cubit_screen_base.dart::CubitScreenBase" <|-- "wyatt_bloc_layout::src::presentation::cubit_screen_crud_base.dart::CubitScreenCrudBase" +"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::cubit_screen_crud_base.dart::CubitScreenCrudBase" + +abstract class "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen.dart::BottomNavigationBarLayoutCubitScreen" { + +double height + +BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)? custom +Widget parent() } -"wyatt_bloc_layout::src::presentation::screens::bases::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" o-- "flutter::src::widgets::framework.dart::Widget" -"wyatt_bloc_helper::src::cubit.dart::CubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::bases::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" +"wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen.dart::BottomNavigationBarLayoutCubitScreen" o-- "null::BottomNavigationBarComponent Function(BottomNavigationBarComponent)" +"wyatt_bloc_layout::src::presentation::cubit_screen_base.dart::CubitScreenBase" <|-- "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen.dart::BottomNavigationBarLayoutCubitScreen" -abstract class "wyatt_bloc_layout::src::presentation::screens::crud::app_bar_layout_crud_cubit_screen.dart::AppBarLayoutCrudCubitScreen" { +abstract class "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud_item.dart::BottomNavigationBarLayoutCubitScreenCrudItem" { +} + +"wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud.dart::BottomNavigationBarLayoutCubitScreenCrud" <|-- "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud_item.dart::BottomNavigationBarLayoutCubitScreenCrudItem" + +abstract class "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud.dart::BottomNavigationBarLayoutCubitScreenCrud" { +Widget onBuild() } -"wyatt_bloc_layout::src::presentation::screens::bases::app_bar_layout_cubit_screen.dart::AppBarLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::app_bar_layout_crud_cubit_screen.dart::AppBarLayoutCrudCubitScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::app_bar_layout_crud_cubit_screen.dart::AppBarLayoutCrudCubitScreen" +"wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen.dart::BottomNavigationBarLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud.dart::BottomNavigationBarLayoutCubitScreenCrud" +"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud.dart::BottomNavigationBarLayoutCubitScreenCrud" -abstract class "wyatt_bloc_layout::src::presentation::screens::crud::app_bar_layout_crud_cubit_screen.dart::AppBarLayoutCrudListCubitScreen" { - +Widget onBuild() +abstract class "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_grid_layout_cubit_screen_crud_list.dart::BottomNavigationBarGridLayoutCubitScreenCrudList" { } -"wyatt_bloc_layout::src::presentation::screens::bases::app_bar_layout_cubit_screen.dart::AppBarLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::app_bar_layout_crud_cubit_screen.dart::AppBarLayoutCrudListCubitScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::app_bar_layout_crud_cubit_screen.dart::AppBarLayoutCrudListCubitScreen" +"wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud_list.dart::BottomNavigationBarLayoutCubitScreenCrudList" <|-- "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_grid_layout_cubit_screen_crud_list.dart::BottomNavigationBarGridLayoutCubitScreenCrudList" +"wyatt_bloc_layout::src::core::mixins::gird_view_mixin.dart::GridLayoutMixin" <|-- "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_grid_layout_cubit_screen_crud_list.dart::BottomNavigationBarGridLayoutCubitScreenCrudList" -abstract class "wyatt_bloc_layout::src::presentation::screens::crud::crud_cubit_screen.dart::CrudCubitScreen" { - +Widget onBuild() +abstract class "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud_list.dart::BottomNavigationBarLayoutCubitScreenCrudList" { } -"wyatt_bloc_helper::src::cubit.dart::CubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::crud_cubit_screen.dart::CrudCubitScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::crud_cubit_screen.dart::CrudCubitScreen" +"wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud.dart::BottomNavigationBarLayoutCubitScreenCrud" <|-- "wyatt_bloc_layout::src::presentation::bottom_navigation_bar_bloc_layout::bottom_navigation_bar_layout_cubit_screen_crud_list.dart::BottomNavigationBarLayoutCubitScreenCrudList" -abstract class "wyatt_bloc_layout::src::presentation::screens::crud::crud_cubit_screen.dart::CrudListCubitScreen" { - +Widget onBuild() +abstract class "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud_list.dart::TopNavigationBarLayoutCubitScreenCrudList" { } -"wyatt_bloc_helper::src::cubit.dart::CubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::crud_cubit_screen.dart::CrudListCubitScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::crud_cubit_screen.dart::CrudListCubitScreen" +"wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud.dart::TopNavigationBarLayoutCubitScreenCrud" <|-- "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud_list.dart::TopNavigationBarLayoutCubitScreenCrudList" -abstract class "wyatt_bloc_layout::src::presentation::screens::crud::frame_layout_crud_cubit_screen.dart::FrameLayoutCrudCubitScreen" { - +Widget onBuild() +abstract class "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_grid_layout_cubit_screen_crud_list.dart::TopNavigationBarGridLayoutCubitScreenCrudList" { } -"wyatt_bloc_layout::src::presentation::screens::bases::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::frame_layout_crud_cubit_screen.dart::FrameLayoutCrudCubitScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::frame_layout_crud_cubit_screen.dart::FrameLayoutCrudCubitScreen" +"wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud_list.dart::TopNavigationBarLayoutCubitScreenCrudList" <|-- "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_grid_layout_cubit_screen_crud_list.dart::TopNavigationBarGridLayoutCubitScreenCrudList" +"wyatt_bloc_layout::src::core::mixins::gird_view_mixin.dart::GridLayoutMixin" <|-- "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_grid_layout_cubit_screen_crud_list.dart::TopNavigationBarGridLayoutCubitScreenCrudList" -abstract class "wyatt_bloc_layout::src::presentation::screens::crud::frame_layout_crud_cubit_screen.dart::FrameLayoutCrudListCubitScreen" { - +Widget onBuild() -} - -"wyatt_bloc_layout::src::presentation::screens::bases::frame_layout_cubit_screen.dart::FrameLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::frame_layout_crud_cubit_screen.dart::FrameLayoutCrudListCubitScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::frame_layout_crud_cubit_screen.dart::FrameLayoutCrudListCubitScreen" - -abstract class "wyatt_bloc_layout::src::presentation::screens::crud::bottom_bar_layout_crud_cubit_screen.dart::BottomBarLayoutCrudCubitScreen" { - +Widget onBuild() -} - -"wyatt_bloc_layout::src::presentation::screens::bases::bottom_bar_layout_cubit_screen.dart::BottomBarLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::bottom_bar_layout_crud_cubit_screen.dart::BottomBarLayoutCrudCubitScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::bottom_bar_layout_crud_cubit_screen.dart::BottomBarLayoutCrudCubitScreen" - -abstract class "wyatt_bloc_layout::src::presentation::screens::crud::bottom_bar_layout_crud_cubit_screen.dart::BottomBarLayoutCrudListCubitScreen" { - +Widget onBuild() -} - -"wyatt_bloc_layout::src::presentation::screens::bases::bottom_bar_layout_cubit_screen.dart::BottomBarLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::bottom_bar_layout_crud_cubit_screen.dart::BottomBarLayoutCrudListCubitScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::screens::crud::bottom_bar_layout_crud_cubit_screen.dart::BottomBarLayoutCrudListCubitScreen" - -abstract class "wyatt_bloc_layout::src::presentation::consumers::bases::bottom_bar_layout_cubit_consumer_screen.dart::BottomBarLayoutCubitConsumerScreen" { - +int? currentIndex +abstract class "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen.dart::TopNavigationBarLayoutCubitScreen" { + +double height + +TopNavigationBarComponent? Function(TopNavigationBarComponent?)? custom +Widget parent() } -"wyatt_bloc_helper::src::cubit.dart::CubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::bases::bottom_bar_layout_cubit_consumer_screen.dart::BottomBarLayoutCubitConsumerScreen" +"wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen.dart::TopNavigationBarLayoutCubitScreen" o-- "null::TopNavigationBarComponent Function(TopNavigationBarComponent)" +"wyatt_bloc_layout::src::presentation::cubit_screen_base.dart::CubitScreenBase" <|-- "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen.dart::TopNavigationBarLayoutCubitScreen" -abstract class "wyatt_bloc_layout::src::presentation::consumers::bases::app_bar_layout_cubit_consumer_screen.dart::AppBarLayoutCubitConsumerScreen" { - +String? title - +Widget? leading - +List? actions - +Widget parent() +abstract class "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud_item.dart::TopNavigationBarLayoutCubitScreenCrudItem" { } -"wyatt_bloc_layout::src::presentation::consumers::bases::app_bar_layout_cubit_consumer_screen.dart::AppBarLayoutCubitConsumerScreen" o-- "flutter::src::widgets::framework.dart::Widget" -"wyatt_bloc_helper::src::cubit.dart::CubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::bases::app_bar_layout_cubit_consumer_screen.dart::AppBarLayoutCubitConsumerScreen" +"wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud.dart::TopNavigationBarLayoutCubitScreenCrud" <|-- "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud_item.dart::TopNavigationBarLayoutCubitScreenCrudItem" -abstract class "wyatt_bloc_layout::src::presentation::consumers::bases::frame_layout_cubit_consumer_screen.dart::FrameLayoutCubitConsumerScreen" { - +int? currentIndex - +String? title - +Widget? leading - +List? actions - +Widget parent() -} - -"wyatt_bloc_layout::src::presentation::consumers::bases::frame_layout_cubit_consumer_screen.dart::FrameLayoutCubitConsumerScreen" o-- "flutter::src::widgets::framework.dart::Widget" -"wyatt_bloc_helper::src::cubit.dart::CubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::bases::frame_layout_cubit_consumer_screen.dart::FrameLayoutCubitConsumerScreen" - -abstract class "wyatt_bloc_layout::src::presentation::consumers::crud::crud_cubit_consumer_screen.dart::CrudCubitConsumerScreen" { +abstract class "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud.dart::TopNavigationBarLayoutCubitScreenCrud" { +Widget onBuild() } -"wyatt_bloc_helper::src::cubit.dart::CubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::crud_cubit_consumer_screen.dart::CrudCubitConsumerScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::crud_cubit_consumer_screen.dart::CrudCubitConsumerScreen" - -abstract class "wyatt_bloc_layout::src::presentation::consumers::crud::crud_cubit_consumer_screen.dart::CrudListCubitConsumerScreen" { - +Widget onBuild() -} - -"wyatt_bloc_helper::src::cubit.dart::CubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::crud_cubit_consumer_screen.dart::CrudListCubitConsumerScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::crud_cubit_consumer_screen.dart::CrudListCubitConsumerScreen" - -abstract class "wyatt_bloc_layout::src::presentation::consumers::crud::app_bar_layout_crud_cubit_consumer_screen.dart::AppBarLayoutCrudCubitConsumerScreen" { - +Widget onBuild() -} - -"wyatt_bloc_layout::src::presentation::consumers::bases::app_bar_layout_cubit_consumer_screen.dart::AppBarLayoutCubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::app_bar_layout_crud_cubit_consumer_screen.dart::AppBarLayoutCrudCubitConsumerScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::app_bar_layout_crud_cubit_consumer_screen.dart::AppBarLayoutCrudCubitConsumerScreen" - -abstract class "wyatt_bloc_layout::src::presentation::consumers::crud::app_bar_layout_crud_cubit_consumer_screen.dart::AppBarLayoutCrudListCubitConsumerScreen" { - +Widget onBuild() -} - -"wyatt_bloc_layout::src::presentation::consumers::bases::app_bar_layout_cubit_consumer_screen.dart::AppBarLayoutCubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::app_bar_layout_crud_cubit_consumer_screen.dart::AppBarLayoutCrudListCubitConsumerScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::app_bar_layout_crud_cubit_consumer_screen.dart::AppBarLayoutCrudListCubitConsumerScreen" - -abstract class "wyatt_bloc_layout::src::presentation::consumers::crud::bottom_bar_layout_crud_cubit_consumer_screen.dart::BottomBarLayoutCrudCubitConsumerScreen" { - +Widget onBuild() -} - -"wyatt_bloc_layout::src::presentation::consumers::bases::bottom_bar_layout_cubit_consumer_screen.dart::BottomBarLayoutCubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::bottom_bar_layout_crud_cubit_consumer_screen.dart::BottomBarLayoutCrudCubitConsumerScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::bottom_bar_layout_crud_cubit_consumer_screen.dart::BottomBarLayoutCrudCubitConsumerScreen" - -abstract class "wyatt_bloc_layout::src::presentation::consumers::crud::bottom_bar_layout_crud_cubit_consumer_screen.dart::BottomBarLayoutCrudListCubitConsumerScreen" { - +Widget onBuild() -} - -"wyatt_bloc_layout::src::presentation::consumers::bases::bottom_bar_layout_cubit_consumer_screen.dart::BottomBarLayoutCubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::bottom_bar_layout_crud_cubit_consumer_screen.dart::BottomBarLayoutCrudListCubitConsumerScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::bottom_bar_layout_crud_cubit_consumer_screen.dart::BottomBarLayoutCrudListCubitConsumerScreen" - -abstract class "wyatt_bloc_layout::src::presentation::consumers::crud::frame_layout_crud_cubit_consumer_screen.dart::FrameLayoutCrudCubitConsumerScreen" { - +Widget onBuild() -} - -"wyatt_bloc_layout::src::presentation::consumers::bases::frame_layout_cubit_consumer_screen.dart::FrameLayoutCubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::frame_layout_crud_cubit_consumer_screen.dart::FrameLayoutCrudCubitConsumerScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::frame_layout_crud_cubit_consumer_screen.dart::FrameLayoutCrudCubitConsumerScreen" - -abstract class "wyatt_bloc_layout::src::presentation::consumers::crud::frame_layout_crud_cubit_consumer_screen.dart::FrameLayoutCrudListCubitConsumerScreen" { - +Widget onBuild() -} - -"wyatt_bloc_layout::src::presentation::consumers::bases::frame_layout_cubit_consumer_screen.dart::FrameLayoutCubitConsumerScreen" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::frame_layout_crud_cubit_consumer_screen.dart::FrameLayoutCrudListCubitConsumerScreen" -"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::consumers::crud::frame_layout_crud_cubit_consumer_screen.dart::FrameLayoutCrudListCubitConsumerScreen" +"wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen.dart::TopNavigationBarLayoutCubitScreen" <|-- "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud.dart::TopNavigationBarLayoutCubitScreenCrud" +"wyatt_bloc_layout::src::core::crud_cubit_consumer_screen_mixin.dart::CrudMixin" <|-- "wyatt_bloc_layout::src::presentation::top_navigation_bar_bloc_layout::top_navigation_bar_layout_cubit_screen_crud.dart::TopNavigationBarLayoutCubitScreenCrud" @enduml \ No newline at end of file diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/bars/bars.dart b/packages/wyatt_ui_components/lib/src/domain/entities/bars/bars.dart index 5bd04fd5..a09ee312 100644 --- a/packages/wyatt_ui_components/lib/src/domain/entities/bars/bars.dart +++ b/packages/wyatt_ui_components/lib/src/domain/entities/bars/bars.dart @@ -15,5 +15,6 @@ // along with this program. If not, see . export './bottom_navigation_bar_component.dart'; +export './top_app_bar_component.dart'; +export './top_bar_component.dart'; export './top_navigation_bar_component.dart'; -export 'top_app_bar_component.dart'; diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_app_bar_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_app_bar_component.dart index 7be231f2..0d94d9cf 100644 --- a/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_app_bar_component.dart +++ b/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_app_bar_component.dart @@ -17,7 +17,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart'; -import 'package:wyatt_ui_components/src/domain/entities/bars/top_bar_component.dart'; import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; part 'top_app_bar_component.g.dart'; diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.dart index 3f9304ec..4d6a2e05 100644 --- a/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.dart +++ b/packages/wyatt_ui_components/lib/src/domain/entities/bars/top_navigation_bar_component.dart @@ -17,7 +17,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart'; -import 'package:wyatt_ui_components/src/domain/entities/bars/top_bar_component.dart'; import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; part 'top_navigation_bar_component.g.dart'; diff --git a/packages/wyatt_ui_layout/example/.metadata b/packages/wyatt_ui_layout/example/.metadata index cda1dfd1..9e94e447 100644 --- a/packages/wyatt_ui_layout/example/.metadata +++ b/packages/wyatt_ui_layout/example/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled. version: - revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + revision: c07f7888888435fd9df505aa2efc38d3cf65681b channel: stable project_type: app @@ -13,14 +13,14 @@ project_type: app migration: platforms: - platform: root - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - - platform: android - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - - platform: ios - create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 - base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849 + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b + - platform: macos + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b + - platform: web + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b # User provided section diff --git a/packages/wyatt_ui_layout/example/lib/components/custom_app_bar.dart b/packages/wyatt_ui_layout/example/lib/components/custom_app_bar.dart index 94bafe9d..03a8f08e 100644 --- a/packages/wyatt_ui_layout/example/lib/components/custom_app_bar.dart +++ b/packages/wyatt_ui_layout/example/lib/components/custom_app_bar.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart'; import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; diff --git a/packages/wyatt_ui_layout/example/lib/pages/app_bar_layout_page.dart b/packages/wyatt_ui_layout/example/lib/pages/app_bar_layout_page.dart index 0c12ff08..0e4defff 100644 --- a/packages/wyatt_ui_layout/example/lib/pages/app_bar_layout_page.dart +++ b/packages/wyatt_ui_layout/example/lib/pages/app_bar_layout_page.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; +import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; import 'package:wyatt_ui_layout/wyatt_wyatt_ui_layout.dart'; class AppBarLayoutPage extends StatelessWidget { const AppBarLayoutPage({super.key}); @override - Widget build(BuildContext context) => const AppBarLayout( - title: 'App Bar Layout', - body: Center( + Widget build(BuildContext context) => TopAppBarLayout( + custom: (p0) => p0?.copyWith.title('New Title'.wrap()), + body: const Center( child: Text( 'Body', ), diff --git a/packages/wyatt_ui_layout/example/lib/pages/available_layouts.dart b/packages/wyatt_ui_layout/example/lib/pages/available_layouts.dart index a4d73d28..db9ef21c 100644 --- a/packages/wyatt_ui_layout/example/lib/pages/available_layouts.dart +++ b/packages/wyatt_ui_layout/example/lib/pages/available_layouts.dart @@ -7,8 +7,7 @@ class AvailabaleLayouts extends StatelessWidget { const AvailabaleLayouts({super.key}); @override - Widget build(BuildContext context) => AppBarLayout( - title: 'Available Layouts', + Widget build(BuildContext context) => TopAppBarLayout( body: Center( child: SingleChildScrollView( physics: const BouncingScrollPhysics(), diff --git a/packages/wyatt_ui_layout/example/lib/pages/bottom_navigation_bar_layout_page_1.dart b/packages/wyatt_ui_layout/example/lib/pages/bottom_navigation_bar_layout_page_1.dart index a76db448..f7635e96 100644 --- a/packages/wyatt_ui_layout/example/lib/pages/bottom_navigation_bar_layout_page_1.dart +++ b/packages/wyatt_ui_layout/example/lib/pages/bottom_navigation_bar_layout_page_1.dart @@ -5,10 +5,9 @@ class BottomNavigationBarLayoutPage1 extends StatelessWidget { const BottomNavigationBarLayoutPage1({super.key}); @override - Widget build(BuildContext context) => const BottomNavigationBarLayout( - currentIndex: 0, - body: AppBarLayout( - title: 'Bottom Bar Navigation Layout', + Widget build(BuildContext context) => BottomNavigationBarLayout( + custom: (p0) => p0?.copyWith.call(currentIndex: 0), + body: const TopAppBarLayout( body: Center( child: Text('Body'), ), diff --git a/packages/wyatt_ui_layout/example/lib/pages/bottom_navigation_bar_layout_page_2.dart b/packages/wyatt_ui_layout/example/lib/pages/bottom_navigation_bar_layout_page_2.dart index 261ce32c..5d864f55 100644 --- a/packages/wyatt_ui_layout/example/lib/pages/bottom_navigation_bar_layout_page_2.dart +++ b/packages/wyatt_ui_layout/example/lib/pages/bottom_navigation_bar_layout_page_2.dart @@ -5,10 +5,9 @@ class BottomNavigationBarLayoutPage2 extends StatelessWidget { const BottomNavigationBarLayoutPage2({super.key}); @override - Widget build(BuildContext context) => const BottomNavigationBarLayout( - currentIndex: 1, - body: AppBarLayout( - title: 'Bottom Bar Navigation Layout', + Widget build(BuildContext context) => BottomNavigationBarLayout( + custom: (p0) => p0?.copyWith.currentIndex(1), + body: const TopAppBarLayout( body: Center( child: Text('Body'), ), diff --git a/packages/wyatt_ui_layout/example/macos/.gitignore b/packages/wyatt_ui_layout/example/macos/.gitignore new file mode 100644 index 00000000..746adbb6 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/packages/wyatt_ui_layout/example/macos/Flutter/Flutter-Debug.xcconfig b/packages/wyatt_ui_layout/example/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 00000000..c2efd0b6 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/wyatt_ui_layout/example/macos/Flutter/Flutter-Release.xcconfig b/packages/wyatt_ui_layout/example/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 00000000..c2efd0b6 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/wyatt_ui_layout/example/macos/Flutter/GeneratedPluginRegistrant.swift b/packages/wyatt_ui_layout/example/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 00000000..cccf817a --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,10 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { +} diff --git a/packages/wyatt_ui_layout/example/macos/Runner.xcodeproj/project.pbxproj b/packages/wyatt_ui_layout/example/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..d9333e47 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,573 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* example.app */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/packages/wyatt_ui_layout/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/wyatt_ui_layout/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/wyatt_ui_layout/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/wyatt_ui_layout/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..fb7259e1 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/wyatt_ui_layout/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/packages/wyatt_ui_layout/example/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/wyatt_ui_layout/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/wyatt_ui_layout/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/wyatt_ui_layout/example/macos/Runner/AppDelegate.swift b/packages/wyatt_ui_layout/example/macos/Runner/AppDelegate.swift new file mode 100644 index 00000000..d53ef643 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..a2ec33f1 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 00000000..82b6f9d9 Binary files /dev/null and b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 00000000..13b35eba Binary files /dev/null and b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 00000000..0a3f5fa4 Binary files /dev/null and b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 00000000..bdb57226 Binary files /dev/null and b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 00000000..f083318e Binary files /dev/null and b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 00000000..326c0e72 Binary files /dev/null and b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 00000000..2f1632cf Binary files /dev/null and b/packages/wyatt_ui_layout/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Base.lproj/MainMenu.xib b/packages/wyatt_ui_layout/example/macos/Runner/Base.lproj/MainMenu.xib new file mode 100644 index 00000000..80e867a4 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/Base.lproj/MainMenu.xib @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Configs/AppInfo.xcconfig b/packages/wyatt_ui_layout/example/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 00000000..dda192bc --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = example + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.example + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2023 com.example. All rights reserved. diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Configs/Debug.xcconfig b/packages/wyatt_ui_layout/example/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 00000000..36b0fd94 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Configs/Release.xcconfig b/packages/wyatt_ui_layout/example/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 00000000..dff4f495 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Configs/Warnings.xcconfig b/packages/wyatt_ui_layout/example/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 00000000..42bcbf47 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/packages/wyatt_ui_layout/example/macos/Runner/DebugProfile.entitlements b/packages/wyatt_ui_layout/example/macos/Runner/DebugProfile.entitlements new file mode 100644 index 00000000..dddb8a30 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Info.plist b/packages/wyatt_ui_layout/example/macos/Runner/Info.plist new file mode 100644 index 00000000..4789daa6 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/packages/wyatt_ui_layout/example/macos/Runner/MainFlutterWindow.swift b/packages/wyatt_ui_layout/example/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 00000000..2722837e --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/packages/wyatt_ui_layout/example/macos/Runner/Release.entitlements b/packages/wyatt_ui_layout/example/macos/Runner/Release.entitlements new file mode 100644 index 00000000..852fa1a4 --- /dev/null +++ b/packages/wyatt_ui_layout/example/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/packages/wyatt_ui_layout/example/web/favicon.png b/packages/wyatt_ui_layout/example/web/favicon.png new file mode 100644 index 00000000..8aaa46ac Binary files /dev/null and b/packages/wyatt_ui_layout/example/web/favicon.png differ diff --git a/packages/wyatt_ui_layout/example/web/icons/Icon-192.png b/packages/wyatt_ui_layout/example/web/icons/Icon-192.png new file mode 100644 index 00000000..b749bfef Binary files /dev/null and b/packages/wyatt_ui_layout/example/web/icons/Icon-192.png differ diff --git a/packages/wyatt_ui_layout/example/web/icons/Icon-512.png b/packages/wyatt_ui_layout/example/web/icons/Icon-512.png new file mode 100644 index 00000000..88cfd48d Binary files /dev/null and b/packages/wyatt_ui_layout/example/web/icons/Icon-512.png differ diff --git a/packages/wyatt_ui_layout/example/web/icons/Icon-maskable-192.png b/packages/wyatt_ui_layout/example/web/icons/Icon-maskable-192.png new file mode 100644 index 00000000..eb9b4d76 Binary files /dev/null and b/packages/wyatt_ui_layout/example/web/icons/Icon-maskable-192.png differ diff --git a/packages/wyatt_ui_layout/example/web/icons/Icon-maskable-512.png b/packages/wyatt_ui_layout/example/web/icons/Icon-maskable-512.png new file mode 100644 index 00000000..d69c5669 Binary files /dev/null and b/packages/wyatt_ui_layout/example/web/icons/Icon-maskable-512.png differ diff --git a/packages/wyatt_ui_layout/example/web/index.html b/packages/wyatt_ui_layout/example/web/index.html new file mode 100644 index 00000000..be820e83 --- /dev/null +++ b/packages/wyatt_ui_layout/example/web/index.html @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + example + + + + + + + + + + diff --git a/packages/wyatt_ui_layout/example/web/manifest.json b/packages/wyatt_ui_layout/example/web/manifest.json new file mode 100644 index 00000000..096edf8f --- /dev/null +++ b/packages/wyatt_ui_layout/example/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "example", + "short_name": "example", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/packages/wyatt_ui_layout/lib/src/presentation/layouts/app_bar_layout.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/app_bar_layout.dart deleted file mode 100644 index 26cd6fdb..00000000 --- a/packages/wyatt_ui_layout/lib/src/presentation/layouts/app_bar_layout.dart +++ /dev/null @@ -1,47 +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 . - -import 'package:flutter/material.dart'; -import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; -import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart'; - -class AppBarLayout extends Layout { - const AppBarLayout({ - required this.body, - this.title, - this.leading, - this.actions, - super.key, - }); - final String? title; - final Widget? leading; - final List? actions; - final Widget body; - - @override - Widget build(BuildContext context) => Scaffold( - appBar: PreferredSize( - preferredSize: const Size.fromHeight(60), - child: context.components.appBar?.copyWith( - title: title.wrap(), - leading: leading, - actions: actions, - ) ?? - const SizedBox.shrink(), - ), - body: body, - ); -} diff --git a/packages/wyatt_ui_layout/lib/src/presentation/layouts/bottom_navigation_bar_layout.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/bottom_navigation_bar_layout.dart deleted file mode 100644 index 97287f0f..00000000 --- a/packages/wyatt_ui_layout/lib/src/presentation/layouts/bottom_navigation_bar_layout.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; -import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart'; - -class BottomNavigationBarLayout extends Layout { - const BottomNavigationBarLayout({ - this.currentIndex, - this.body, - super.key, - }); - final Widget? body; - final int? currentIndex; - @override - Widget build(BuildContext context) => Scaffold( - body: body, - bottomNavigationBar: context.components.bottomNavigationBar?.copyWith( - currentIndex: currentIndex ?? 0, - ), - ); -} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/screens.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/content_layouts/content_layouts.dart similarity index 92% rename from packages/wyatt_bloc_layout/lib/src/presentation/screens/screens.dart rename to packages/wyatt_ui_layout/lib/src/presentation/layouts/content_layouts/content_layouts.dart index 57ee4935..e5215b69 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/screens.dart +++ b/packages/wyatt_ui_layout/lib/src/presentation/layouts/content_layouts/content_layouts.dart @@ -14,5 +14,4 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export './bases/bases.dart'; -export './crud/crud.dart'; +export './grid_layout.dart'; diff --git a/packages/wyatt_ui_layout/lib/src/presentation/layouts/content_layouts/grid_layout.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/content_layouts/grid_layout.dart new file mode 100644 index 00000000..c06014c1 --- /dev/null +++ b/packages/wyatt_ui_layout/lib/src/presentation/layouts/content_layouts/grid_layout.dart @@ -0,0 +1,77 @@ +// 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 . + +import 'package:flutter/material.dart'; +import 'package:gap/gap.dart'; +import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart'; + +class GridLayout extends ContentLayout { + const GridLayout({ + required this.children, + this.verticalGap = 30, + this.horizontalGap = 30, + super.key, + }); + + final List children; + final double verticalGap; + final double horizontalGap; + + @override + Widget build(BuildContext context) { + if (children.isEmpty) { + return const SizedBox.shrink(); + } + + final childrenLeft = []; + final childrenRight = []; + + int i = 0; + for (final child in children) { + if (i.isEven) { + childrenLeft + ..add(child) + ..add(Gap(verticalGap)); + } else { + childrenRight + ..add(child) + ..add(Gap(verticalGap)); + } + i++; + } + + return Column( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Column( + children: childrenLeft, + ), + ), + Gap(horizontalGap), + Expanded( + child: Column( + children: childrenRight, + ), + ), + ], + ), + ], + ); + } +} diff --git a/packages/wyatt_ui_layout/lib/src/presentation/layouts/frame_layout.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/frame_layout.dart deleted file mode 100644 index da0f7f40..00000000 --- a/packages/wyatt_ui_layout/lib/src/presentation/layouts/frame_layout.dart +++ /dev/null @@ -1,52 +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 . - -import 'package:flutter/material.dart'; -import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; -import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart'; - -class FrameLayout extends Layout { - const FrameLayout({ - required this.body, - this.title, - this.leading, - this.actions, - this.currentIndex, - super.key, - }); - final String? title; - final Widget? leading; - final List? actions; - final Widget body; - final int? currentIndex; - - @override - Widget build(BuildContext context) => Scaffold( - appBar: PreferredSize( - preferredSize: const Size.fromHeight(60), - child: context.components.appBar?.copyWith( - title: title.wrap(), - leading: leading, - actions: actions, - ) ?? - const SizedBox.shrink(), - ), - body: body, - bottomNavigationBar: context.components.bottomNavigationBar?.copyWith( - currentIndex: currentIndex ?? 0, - ), - ); -} diff --git a/packages/wyatt_ui_layout/lib/src/presentation/layouts/layout.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/layout.dart index e05ee26a..41f839a8 100644 --- a/packages/wyatt_ui_layout/lib/src/presentation/layouts/layout.dart +++ b/packages/wyatt_ui_layout/lib/src/presentation/layouts/layout.dart @@ -1,5 +1,41 @@ +// 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 . + +/// This file contains the [Layout] abstract class, which provides a base +/// for creating custom layout widgets in Flutter. import 'package:flutter/material.dart'; +/// An abstract class that provides a base for creating custom layout widgets. +/// +/// This class can be used as a base for creating custom layout widgets in +/// Flutter. It extends the [StatelessWidget] class and adds support for +/// providing a custom key. Custom layout widgets that extend this class should +/// override the [build] method to define the layout. abstract class Layout extends StatelessWidget { + /// Creates a new [Layout] instance. + /// + /// [key] is an optional parameter that can be used to provide a custom key + /// for the widget. const Layout({super.key}); } + +abstract class StructuralLayout extends Layout { + const StructuralLayout({super.key}); +} + +abstract class ContentLayout extends Layout { + const ContentLayout({super.key}); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/bases.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/layouts.dart similarity index 84% rename from packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/bases.dart rename to packages/wyatt_ui_layout/lib/src/presentation/layouts/layouts.dart index 1b44493c..09574c7b 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/screens/bases/bases.dart +++ b/packages/wyatt_ui_layout/lib/src/presentation/layouts/layouts.dart @@ -14,6 +14,5 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export 'app_bar_layout_cubit_screen.dart'; -export 'bottom_bar_layout_cubit_screen.dart'; -export 'frame_layout_cubit_screen.dart'; +export './content_layouts/content_layouts.dart'; +export './structural_layouts/structural_layouts.dart'; diff --git a/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/bottom_navigation_bar_layout.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/bottom_navigation_bar_layout.dart new file mode 100644 index 00000000..9b04b955 --- /dev/null +++ b/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/bottom_navigation_bar_layout.dart @@ -0,0 +1,56 @@ +// 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 . + +/// This file contains the concrete class [BottomNavigationBarLayout]. +/// +/// The [BottomNavigationBarLayout] class is a concrete implementation of the +/// [Layout] abstract class, which defines a layout structure with a bottom +/// navigation bar component. +/// +/// [BottomNavigationBarLayout] includes an optional +/// [BottomNavigationBarLayout.custom] +/// function for customizing the bottom navigation bar component. +import 'package:flutter/material.dart'; +import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; +import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart'; + +/// A concrete implementation of the [Layout] abstract class for a layout with +/// a bottom navigation bar component. +class BottomNavigationBarLayout extends StructuralLayout { + /// Creates a [BottomNavigationBarLayout] instance. + /// + /// [body] represents the main content of the layout. + /// [custom] is an optional function that can be used to customize + /// the bottom navigation bar component. + const BottomNavigationBarLayout({ + required this.body, + this.custom, + super.key, + }); + + final Widget? body; + final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)? + custom; + + @override + Widget build(BuildContext context) => Scaffold( + body: body, + bottomNavigationBar: custom?.call( + context.components.bottomNavigationBar, + ) ?? + context.components.bottomNavigationBar, + ); +} diff --git a/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/frame_layout.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/frame_layout.dart new file mode 100644 index 00000000..6c989cc0 --- /dev/null +++ b/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/frame_layout.dart @@ -0,0 +1,66 @@ +// 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 . + +import 'package:flutter/material.dart'; +import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; +import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart'; + +/// A layout that contains a top app bar, a body and a bottom navigation bar. +/// +/// This layout consists of a [TopAppBarComponent] at the top of the screen, +/// a [body] in the middle and a [BottomNavigationBarComponent] at the bottom. +/// You can customize the app bar and the bottom navigation bar by passing +/// a [customAppBar] and a [customBottomNavBar] functions that take +/// the corresponding components and return the customized ones. +class FrameLayout extends StructuralLayout { + /// Creates a [FrameLayout] instance. + /// + /// [body] represents the main content of the layout. + /// [customAppBar] is an optional function that can be used to customize + /// the top app bar component. + /// [customBottomNavBar] is an optional function that can be used to customize + /// the bottom navigation bar component. + /// [height] represents the height of the top app bar. + const FrameLayout({ + required this.body, + this.customAppBar, + this.customBottomNavBar, + this.height = 60, + super.key, + }); + + final TopAppBarComponent? Function(TopAppBarComponent?)? customAppBar; + final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)? + customBottomNavBar; + final Widget body; + final double height; + + @override + Widget build(BuildContext context) => Scaffold( + appBar: (customAppBar?.call(context.components.appBar) != null || + context.components.appBar != null) + ? PreferredSize( + preferredSize: Size.fromHeight(height), + child: customAppBar?.call(context.components.appBar) ?? + context.components.appBar!, + ) + : null, + body: body, + bottomNavigationBar: + customBottomNavBar?.call(context.components.bottomNavigationBar) ?? + context.components.bottomNavigationBar, + ); +} diff --git a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/bases.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/structural_layouts.dart similarity index 81% rename from packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/bases.dart rename to packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/structural_layouts.dart index 08af9be8..e22f407c 100644 --- a/packages/wyatt_bloc_layout/lib/src/presentation/consumers/bases/bases.dart +++ b/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/structural_layouts.dart @@ -14,6 +14,6 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -export './app_bar_layout_cubit_consumer_screen.dart'; -export './bottom_bar_layout_cubit_consumer_screen.dart'; -export './frame_layout_cubit_consumer_screen.dart'; +export './bottom_navigation_bar_layout.dart'; +export './frame_layout.dart'; +export './top_app_bar_layout.dart'; diff --git a/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/top_app_bar_layout.dart b/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/top_app_bar_layout.dart new file mode 100644 index 00000000..b9acfbdc --- /dev/null +++ b/packages/wyatt_ui_layout/lib/src/presentation/layouts/structural_layouts/top_app_bar_layout.dart @@ -0,0 +1,109 @@ +// 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 . + +/// This file contains the abstract class [TopBarLayout] and two concrete +/// classes [TopAppBarLayout] and [TopNavigationBarLayout]. +/// The [TopBarLayout] abstract class defines a layout structure with a top bar. +/// The [TopAppBarLayout] and [TopNavigationBarLayout] classes are concrete +/// implementations of the [TopBarLayout] class. + +import 'package:flutter/material.dart'; +import 'package:wyatt_ui_components/wyatt_wyatt_ui_components.dart'; +import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart'; + +/// An abstract class for creating layouts with a top bar component. +/// +/// This class provides a base for creating layouts that include a top bar +/// component, such as an app bar or navigation bar. +/// +/// Implementations of this class must provide a concrete implementation of +/// the [child] method, which returns the specific top bar component for the +/// given [BuildContext]. +/// +/// [T] represents the type of the top bar component. +abstract class TopBarLayout + extends StructuralLayout { + /// Creates a [TopBarLayout] instance. + /// + /// [body] represents the main content of the layout. + /// [custom] is an optional function that can be used to customize + /// the top bar component. + /// [height] represents the height of the top bar. + const TopBarLayout({ + required this.body, + this.custom, + this.height = 60, + super.key, + }); + + final Widget body; + + final T? Function(T?)? custom; + final double height; + + /// Returns the top bar component for the given [BuildContext]. + T? child(BuildContext context); + + @override + Widget build(BuildContext context) => Scaffold( + appBar: (custom?.call(child(context)) != null || child(context) != null) + ? PreferredSize( + preferredSize: Size.fromHeight(height), + child: custom?.call(child(context)) ?? child(context)!, + ) + : null, + body: body, + ); +} + +/// A concrete implementation of [TopBarLayout] for an app bar. +class TopAppBarLayout extends TopBarLayout { + /// Creates a [TopAppBarLayout] instance. + /// + /// [body] represents the main content of the layout. + /// [custom] is an optional function that can be used to customize + /// the top bar component. + /// [height] represents the height of the top bar. + const TopAppBarLayout({ + required super.body, + super.custom, + super.height, + super.key, + }); + + @override + TopAppBarComponent? child(BuildContext context) => context.components.appBar; +} + +/// A concrete implementation of [TopBarLayout] for a navigation bar. +class TopNavigationBarLayout extends TopBarLayout { + /// Creates a [TopNavigationBarLayout] instance. + /// + /// [body] represents the main content of the layout. + /// [custom] is an optional function that can be used to customize + /// the top bar component. + /// [height] represents the height of the top bar. + const TopNavigationBarLayout({ + required super.body, + super.custom, + super.height, + super.key, + }); + + @override + TopNavigationBarComponent? child(BuildContext context) => + context.components.topNavigationBarComponent; +} diff --git a/packages/wyatt_ui_layout/lib/src/presentation/presentation.dart b/packages/wyatt_ui_layout/lib/src/presentation/presentation.dart index a1bff66c..8756e56f 100644 --- a/packages/wyatt_ui_layout/lib/src/presentation/presentation.dart +++ b/packages/wyatt_ui_layout/lib/src/presentation/presentation.dart @@ -1,3 +1,17 @@ -export 'layouts/app_bar_layout.dart'; -export 'layouts/bottom_navigation_bar_layout.dart'; -export 'layouts/frame_layout.dart'; +// 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 . + +export './layouts/layouts.dart'; diff --git a/packages/wyatt_ui_layout/models/class-models.puml b/packages/wyatt_ui_layout/models/class-models.puml index 8f2a5e98..b74dd870 100644 --- a/packages/wyatt_ui_layout/models/class-models.puml +++ b/packages/wyatt_ui_layout/models/class-models.puml @@ -1,28 +1,76 @@ -@startuml +@startuml Class set namespaceSeparator :: +class "wyatt_ui_layout::src::presentation::layouts::structural_layouts::bottom_navigation_bar_layout.dart::BottomNavigationBarLayout" { + +Widget? body + +BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)? custom + +Widget build() +} + +"wyatt_ui_layout::src::presentation::layouts::structural_layouts::bottom_navigation_bar_layout.dart::BottomNavigationBarLayout" o-- "flutter::src::widgets::framework.dart::Widget" +"wyatt_ui_layout::src::presentation::layouts::structural_layouts::bottom_navigation_bar_layout.dart::BottomNavigationBarLayout" o-- "null::BottomNavigationBarComponent Function(BottomNavigationBarComponent)" +"wyatt_ui_layout::src::presentation::layouts::layout.dart::StructuralLayout" <|-- "wyatt_ui_layout::src::presentation::layouts::structural_layouts::bottom_navigation_bar_layout.dart::BottomNavigationBarLayout" + +abstract class "wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopBarLayout" { + +Widget body + +T? Function(T?)? custom + +double height + +T? child() + +Widget build() +} + +"wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopBarLayout" o-- "flutter::src::widgets::framework.dart::Widget" +"wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopBarLayout" o-- "null::T Function(T)" +"wyatt_ui_layout::src::presentation::layouts::layout.dart::StructuralLayout" <|-- "wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopBarLayout" + +class "wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopAppBarLayout" { + +TopAppBarComponent? child() +} + +"wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopBarLayout" <|-- "wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopAppBarLayout" + +class "wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopNavigationBarLayout" { + +TopNavigationBarComponent? child() +} + +"wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopBarLayout" <|-- "wyatt_ui_layout::src::presentation::layouts::structural_layouts::top_app_bar_layout.dart::TopNavigationBarLayout" + +class "wyatt_ui_layout::src::presentation::layouts::structural_layouts::frame_layout.dart::FrameLayout" { + +TopAppBarComponent? Function(TopAppBarComponent?)? customAppBar + +BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)? customBottomNavBar + +Widget body + +double height + +Widget build() +} + +"wyatt_ui_layout::src::presentation::layouts::structural_layouts::frame_layout.dart::FrameLayout" o-- "null::TopAppBarComponent Function(TopAppBarComponent)" +"wyatt_ui_layout::src::presentation::layouts::structural_layouts::frame_layout.dart::FrameLayout" o-- "null::BottomNavigationBarComponent Function(BottomNavigationBarComponent)" +"wyatt_ui_layout::src::presentation::layouts::structural_layouts::frame_layout.dart::FrameLayout" o-- "flutter::src::widgets::framework.dart::Widget" +"wyatt_ui_layout::src::presentation::layouts::layout.dart::StructuralLayout" <|-- "wyatt_ui_layout::src::presentation::layouts::structural_layouts::frame_layout.dart::FrameLayout" + abstract class "wyatt_ui_layout::src::presentation::layouts::layout.dart::Layout" { } "flutter::src::widgets::framework.dart::StatelessWidget" <|-- "wyatt_ui_layout::src::presentation::layouts::layout.dart::Layout" -class "wyatt_ui_layout::src::presentation::layouts::bottom_navigation_bar_layout.dart::BottomNavigationBarLayout" { - +Widget body - +int currentIndex +abstract class "wyatt_ui_layout::src::presentation::layouts::layout.dart::StructuralLayout" { +} + +"wyatt_ui_layout::src::presentation::layouts::layout.dart::Layout" <|-- "wyatt_ui_layout::src::presentation::layouts::layout.dart::StructuralLayout" + +abstract class "wyatt_ui_layout::src::presentation::layouts::layout.dart::ContentLayout" { +} + +"wyatt_ui_layout::src::presentation::layouts::layout.dart::Layout" <|-- "wyatt_ui_layout::src::presentation::layouts::layout.dart::ContentLayout" + +class "wyatt_ui_layout::src::presentation::layouts::content_layouts::grid_layout.dart::GridLayout" { + +List children + +double verticalGap + +double horizontalGap +Widget build() } -"wyatt_ui_layout::src::presentation::layouts::bottom_navigation_bar_layout.dart::BottomNavigationBarLayout" o-- "flutter::src::widgets::framework.dart::Widget" -"wyatt_ui_layout::src::presentation::layouts::layout.dart::Layout" <|-- "wyatt_ui_layout::src::presentation::layouts::bottom_navigation_bar_layout.dart::BottomNavigationBarLayout" - -class "wyatt_ui_layout::src::presentation::layouts::app_bar_layout.dart::AppBarLayout" { - +String title - +Widget body - +Widget build() -} - -"wyatt_ui_layout::src::presentation::layouts::app_bar_layout.dart::AppBarLayout" o-- "flutter::src::widgets::framework.dart::Widget" -"wyatt_ui_layout::src::presentation::layouts::layout.dart::Layout" <|-- "wyatt_ui_layout::src::presentation::layouts::app_bar_layout.dart::AppBarLayout" +"wyatt_ui_layout::src::presentation::layouts::layout.dart::ContentLayout" <|-- "wyatt_ui_layout::src::presentation::layouts::content_layouts::grid_layout.dart::GridLayout" @enduml \ No newline at end of file diff --git a/packages/wyatt_ui_layout/pubspec.yaml b/packages/wyatt_ui_layout/pubspec.yaml index f62e4219..7c8703ed 100644 --- a/packages/wyatt_ui_layout/pubspec.yaml +++ b/packages/wyatt_ui_layout/pubspec.yaml @@ -11,6 +11,7 @@ environment: dependencies: flutter: sdk: flutter + gap: ^2.0.1 wyatt_ui_components: git: