Compare commits
	
		
			7 Commits
		
	
	
		
			3a59230bce
			...
			7c97417233
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 7c97417233 | |||
| 4256622726 | |||
| 89ce553fa2 | |||
| abb5f0c735 | |||
| 99311c5d8c | |||
| a0783b4b60 | |||
| 4029d4de03 | 
@ -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<ExampleCubit, String> {
 | 
			
		||||
    extends CubitScreenCrudItemBase<ExampleCubit, String> {
 | 
			
		||||
  const ExampleCrudStateManagement({super.key});
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
@ -91,10 +91,13 @@ class ExampleCrudStateManagement
 | 
			
		||||
  @override
 | 
			
		||||
  Widget successBuilder(BuildContext context, CrudLoaded<String> state) =>
 | 
			
		||||
      Center(child: Text(state.data ?? 'errors'));
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ExampleCubit create(BuildContext context) => ExampleCubit()..run();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class ExampleListCrudStateManagement
 | 
			
		||||
    extends CrudListCubitConsumerScreen<ExampleCubit, String> {
 | 
			
		||||
    extends CubitScreenCrudListBase<ExampleCubit, String> {
 | 
			
		||||
  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<ExampleCubit, String> {
 | 
			
		||||
  const ExampleFrameLayoutCrudConsumer({super.key})
 | 
			
		||||
    extends FrameLayoutCubitScreenCrudItem<ExampleCubit, String> {
 | 
			
		||||
  ExampleFrameLayoutCrudConsumer({super.key})
 | 
			
		||||
      : super(
 | 
			
		||||
          title: 'Example Title',
 | 
			
		||||
          currentIndex: 0,
 | 
			
		||||
          customAppBar: (bar) => bar?.copyWith.title(
 | 
			
		||||
            'Example Title'.wrap(),
 | 
			
		||||
          ),
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget successBuilder(BuildContext context, CrudLoaded<String> state) =>
 | 
			
		||||
      Center(child: Text(state.data ?? 'errors'));
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ExampleCubit create(BuildContext context) => ExampleCubit()..run();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class ExampleFrameLayoutCrudListConsumer
 | 
			
		||||
    extends FrameLayoutCrudListCubitConsumerScreen<ExampleCubit, String> {
 | 
			
		||||
  const ExampleFrameLayoutCrudListConsumer({super.key})
 | 
			
		||||
    extends FrameLayoutCubitScreenCrudList<ExampleCubit, String> {
 | 
			
		||||
  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();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -15,3 +15,4 @@
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
export './crud_cubit_consumer_screen_mixin.dart';
 | 
			
		||||
export './mixins/mixins.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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
mixin GridLayoutMixin<SuccessType extends Object?> {
 | 
			
		||||
  Widget gridChild(BuildContext context, SuccessType? successType);
 | 
			
		||||
 | 
			
		||||
  double get verticalGap => 30;
 | 
			
		||||
  double get horizontalGap => 30;
 | 
			
		||||
 | 
			
		||||
  Widget successBuilder(
 | 
			
		||||
    BuildContext context,
 | 
			
		||||
    CrudListLoaded<SuccessType> state,
 | 
			
		||||
  ) =>
 | 
			
		||||
      GridLayout(
 | 
			
		||||
        verticalGap: verticalGap,
 | 
			
		||||
        horizontalGap: horizontalGap,
 | 
			
		||||
        children: state.data.map((e) => gridChild(context, e)).toList(),
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -14,5 +14,4 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
export 'bases/bases.dart';
 | 
			
		||||
export 'crud/crud.dart';
 | 
			
		||||
export './gird_view_mixin.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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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';
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends BottomNavigationBarLayoutCubitScreenCrudList<Cubit, SuccessType>
 | 
			
		||||
    with GridLayoutMixin<SuccessType> {
 | 
			
		||||
  const BottomNavigationBarGridLayoutCubitScreenCrudList({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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>,
 | 
			
		||||
    State extends Object> extends CubitConsumerScreen<Cubit, State> {
 | 
			
		||||
  const BottomBarLayoutCubitConsumerScreen({
 | 
			
		||||
    this.currentIndex,
 | 
			
		||||
    State extends Object> extends CubitScreenBase<Cubit, State> {
 | 
			
		||||
  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,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class BottomNavigationBarLayoutCubitScreenCrud<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        CrudSuccessState extends CrudSuccess>
 | 
			
		||||
    extends BottomNavigationBarLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudSuccessState> {
 | 
			
		||||
  const BottomNavigationBarLayoutCubitScreenCrud({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends BottomNavigationBarLayoutCubitScreenCrud<Cubit,
 | 
			
		||||
        CrudLoaded<SuccessType>> {
 | 
			
		||||
  const BottomNavigationBarLayoutCubitScreenCrudItem({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends BottomNavigationBarLayoutCubitScreenCrud<Cubit,
 | 
			
		||||
        CrudListLoaded<SuccessType>> {
 | 
			
		||||
  const BottomNavigationBarLayoutCubitScreenCrudList({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class FrameLayoutCubitConsumerScreen<
 | 
			
		||||
    Cubit extends bloc_base.Cubit<State>,
 | 
			
		||||
    State extends Object> extends CubitConsumerScreen<Cubit, State> {
 | 
			
		||||
  const FrameLayoutCubitConsumerScreen({
 | 
			
		||||
    this.title,
 | 
			
		||||
    this.leading,
 | 
			
		||||
    this.actions,
 | 
			
		||||
    this.currentIndex,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  final int? currentIndex;
 | 
			
		||||
  final String? title;
 | 
			
		||||
  final Widget? leading;
 | 
			
		||||
  final List<Widget>? actions;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget parent(BuildContext context, Widget child) => FrameLayout(
 | 
			
		||||
        title: title,
 | 
			
		||||
        currentIndex: currentIndex,
 | 
			
		||||
        body: child,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, T extends Object?>
 | 
			
		||||
    extends AppBarLayoutCubitConsumerScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudLoaded<T>> {
 | 
			
		||||
  const AppBarLayoutCrudCubitConsumerScreen({
 | 
			
		||||
    super.title,
 | 
			
		||||
    super.leading,
 | 
			
		||||
    super.actions,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
abstract class AppBarLayoutCrudListCubitConsumerScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>, T extends Object?>
 | 
			
		||||
    extends AppBarLayoutCubitConsumerScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudListLoaded<T>> {
 | 
			
		||||
  const AppBarLayoutCrudListCubitConsumerScreen({
 | 
			
		||||
    super.title,
 | 
			
		||||
    super.leading,
 | 
			
		||||
    super.actions,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class BottomBarLayoutCrudCubitConsumerScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>, T extends Object?>
 | 
			
		||||
    extends BottomBarLayoutCubitConsumerScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudLoaded<T>> {
 | 
			
		||||
  const BottomBarLayoutCrudCubitConsumerScreen({
 | 
			
		||||
    super.currentIndex,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
abstract class BottomBarLayoutCrudListCubitConsumerScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>, T extends Object?>
 | 
			
		||||
    extends BottomBarLayoutCubitConsumerScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudListLoaded<T>> {
 | 
			
		||||
  const BottomBarLayoutCrudListCubitConsumerScreen({
 | 
			
		||||
    super.currentIndex,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class CrudCubitConsumerScreen<Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        T extends Object?> extends CubitConsumerScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudLoaded<T>> {
 | 
			
		||||
  const CrudCubitConsumerScreen({super.key});
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
abstract class CrudListCubitConsumerScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        T extends Object?> extends CubitConsumerScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudListLoaded<T>> {
 | 
			
		||||
  const CrudListCubitConsumerScreen({super.key});
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class FrameLayoutCrudCubitConsumerScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>, T extends Object?>
 | 
			
		||||
    extends FrameLayoutCubitConsumerScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudLoaded<T>> {
 | 
			
		||||
  const FrameLayoutCrudCubitConsumerScreen({
 | 
			
		||||
    super.title,
 | 
			
		||||
    super.leading,
 | 
			
		||||
    super.actions,
 | 
			
		||||
    super.currentIndex,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
abstract class FrameLayoutCrudListCubitConsumerScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>, T extends Object?>
 | 
			
		||||
    extends FrameLayoutCubitConsumerScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudListLoaded<T>> {
 | 
			
		||||
  const FrameLayoutCrudListCubitConsumerScreen({
 | 
			
		||||
    super.title,
 | 
			
		||||
    super.leading,
 | 
			
		||||
    super.actions,
 | 
			
		||||
    super.currentIndex,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class CubitScreenBase<Cubit extends bloc_base.Cubit<State>,
 | 
			
		||||
    State extends Object> extends CubitScreen<Cubit, State> {
 | 
			
		||||
  const CubitScreenBase({super.key});
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class CubitScreenCrudBase<Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        CrudSuccessState extends CrudSuccess>
 | 
			
		||||
    extends CubitScreenBase<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudSuccessState> {
 | 
			
		||||
  const CubitScreenCrudBase({super.key});
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class CubitScreenCrudItemBase<Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
    T extends Object?> extends CubitScreenCrudBase<Cubit, CrudLoaded<T>> {
 | 
			
		||||
  const CubitScreenCrudItemBase({super.key});
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class CubitScreenCrudListBase<Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
    T extends Object?> extends CubitScreenCrudBase<Cubit, CrudListLoaded<T>> {
 | 
			
		||||
  const CubitScreenCrudListBase({super.key});
 | 
			
		||||
}
 | 
			
		||||
@ -14,7 +14,9 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
export './app_bar_layout_crud_cubit_consumer_screen.dart';
 | 
			
		||||
export './bottom_bar_layout_crud_cubit_consumer_screen.dart';
 | 
			
		||||
export './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';
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends FrameLayoutCubitScreenCrudList<Cubit, SuccessType>
 | 
			
		||||
    with GridLayoutMixin<SuccessType> {
 | 
			
		||||
  const FrameLayoutGridCubitScreenCrudList({
 | 
			
		||||
    super.customAppBar,
 | 
			
		||||
    super.customBottomNavBar,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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<Cubit extends bloc_base.Cubit<State>,
 | 
			
		||||
    State extends Object> extends CubitScreen<Cubit, State> {
 | 
			
		||||
    State extends Object> extends CubitScreenBase<Cubit, State> {
 | 
			
		||||
  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<Widget>? 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,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class FrameLayoutCubitScreenCrud<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        CrudSuccessState extends CrudSuccess>
 | 
			
		||||
    extends FrameLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudSuccessState> {
 | 
			
		||||
  const FrameLayoutCubitScreenCrud({
 | 
			
		||||
    super.customAppBar,
 | 
			
		||||
    super.customBottomNavBar,
 | 
			
		||||
    super.height,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends FrameLayoutCubitScreenCrud<Cubit, CrudLoaded<SuccessType>> {
 | 
			
		||||
  const FrameLayoutCubitScreenCrudItem({
 | 
			
		||||
    super.customAppBar,
 | 
			
		||||
    super.customBottomNavBar,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends FrameLayoutCubitScreenCrud<Cubit, CrudListLoaded<SuccessType>> {
 | 
			
		||||
  const FrameLayoutCubitScreenCrudList({
 | 
			
		||||
    super.customAppBar,
 | 
			
		||||
    super.customBottomNavBar,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, T extends Object?>
 | 
			
		||||
    extends CubitScreenCrudListBase<Cubit, T> with GridLayoutMixin<T> {
 | 
			
		||||
  const GridCubitScreenCrudListBase({super.key});
 | 
			
		||||
}
 | 
			
		||||
@ -14,5 +14,11 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
export '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';
 | 
			
		||||
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class AppBarLayoutCrudCubitScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        T extends Object?> extends AppBarLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudLoaded<T>> {
 | 
			
		||||
  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<CrudState>,
 | 
			
		||||
        T extends Object?> extends AppBarLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudListLoaded<T>> {
 | 
			
		||||
  const AppBarLayoutCrudListCubitScreen({
 | 
			
		||||
    super.title,
 | 
			
		||||
    super.leading,
 | 
			
		||||
    super.actions,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class BottomBarLayoutCrudCubitScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        T extends Object?> extends BottomBarLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudLoaded<T>> {
 | 
			
		||||
  const BottomBarLayoutCrudCubitScreen({
 | 
			
		||||
    super.currentIndex,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
abstract class BottomBarLayoutCrudListCubitScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        T extends Object?> extends BottomBarLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudListLoaded<T>> {
 | 
			
		||||
  const BottomBarLayoutCrudListCubitScreen({
 | 
			
		||||
    super.currentIndex,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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';
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class CrudCubitScreen<Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        T extends Object?> extends CubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudLoaded<T>> {
 | 
			
		||||
  const CrudCubitScreen({super.key});
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
abstract class CrudListCubitScreen<Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        T extends Object?> extends CubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudListLoaded<T>> {
 | 
			
		||||
  const CrudListCubitScreen({super.key});
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class FrameLayoutCrudCubitScreen<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        T extends Object?> extends FrameLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudLoaded<T>> {
 | 
			
		||||
  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<CrudState>,
 | 
			
		||||
        T extends Object?> extends FrameLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudListLoaded<T>> {
 | 
			
		||||
  const FrameLayoutCrudListCubitScreen({
 | 
			
		||||
    super.title,
 | 
			
		||||
    super.leading,
 | 
			
		||||
    super.actions,
 | 
			
		||||
    super.currentIndex,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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';
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends TopAppBarLayoutCubitScreenCrudList<Cubit, SuccessType>
 | 
			
		||||
    with GridLayoutMixin<SuccessType> {
 | 
			
		||||
  const TopAppBarGridLayoutCubitScreenCrudList({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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<Cubit extends bloc_base.Cubit<State>,
 | 
			
		||||
    State extends Object> extends CubitScreen<Cubit, State> {
 | 
			
		||||
  const BottomBarLayoutCubitScreen({
 | 
			
		||||
    this.currentIndex,
 | 
			
		||||
abstract class TopAppBarLayoutCubitScreen<Cubit extends bloc_base.Cubit<State>,
 | 
			
		||||
    State extends Object> extends CubitScreenBase<Cubit, State> {
 | 
			
		||||
  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,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -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<Cubit extends bloc_base.Cubit<State>,
 | 
			
		||||
    State extends Object> extends CubitScreen<Cubit, State> {
 | 
			
		||||
  const AppBarLayoutCubitScreen({
 | 
			
		||||
    this.title,
 | 
			
		||||
    this.leading,
 | 
			
		||||
    this.actions,
 | 
			
		||||
abstract class TopAppBarLayoutCubitScreenCrud<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        CrudSuccessState extends CrudSuccess>
 | 
			
		||||
    extends TopAppBarLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudSuccessState> {
 | 
			
		||||
  const TopAppBarLayoutCubitScreenCrud({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  final String? title;
 | 
			
		||||
  final Widget? leading;
 | 
			
		||||
  final List<Widget>? actions;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget parent(BuildContext context, Widget child) => AppBarLayout(
 | 
			
		||||
        title: title,
 | 
			
		||||
        body: child,
 | 
			
		||||
      );
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends TopAppBarLayoutCubitScreenCrud<Cubit, CrudLoaded<SuccessType>> {
 | 
			
		||||
  const TopAppBarLayoutCubitScreenCrudItem({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends TopAppBarLayoutCubitScreenCrud<Cubit, CrudListLoaded<SuccessType>> {
 | 
			
		||||
  const TopAppBarLayoutCubitScreenCrudList({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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';
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends TopNavigationBarLayoutCubitScreenCrudList<Cubit, SuccessType>
 | 
			
		||||
    with GridLayoutMixin<SuccessType> {
 | 
			
		||||
  const TopNavigationBarGridLayoutCubitScreenCrudList({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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>,
 | 
			
		||||
    State extends Object> extends CubitConsumerScreen<Cubit, State> {
 | 
			
		||||
  const AppBarLayoutCubitConsumerScreen({
 | 
			
		||||
    this.title,
 | 
			
		||||
    this.leading,
 | 
			
		||||
    this.actions,
 | 
			
		||||
    State extends Object> extends CubitScreenBase<Cubit, State> {
 | 
			
		||||
  const TopNavigationBarLayoutCubitScreen({
 | 
			
		||||
    this.custom,
 | 
			
		||||
    this.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  final String? title;
 | 
			
		||||
  final Widget? leading;
 | 
			
		||||
  final List<Widget>? 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,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:flutter_bloc/flutter_bloc.dart' as bloc_base;
 | 
			
		||||
import 'package:wyatt_bloc_layout/wyatt_bloc_layout.dart';
 | 
			
		||||
 | 
			
		||||
abstract class TopNavigationBarLayoutCubitScreenCrud<
 | 
			
		||||
        Cubit extends bloc_base.Cubit<CrudState>,
 | 
			
		||||
        CrudSuccessState extends CrudSuccess>
 | 
			
		||||
    extends TopNavigationBarLayoutCubitScreen<Cubit, CrudState>
 | 
			
		||||
    with CrudMixin<Cubit, CrudSuccessState> {
 | 
			
		||||
  const TopNavigationBarLayoutCubitScreenCrud({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget onBuild(BuildContext context, CrudState state) =>
 | 
			
		||||
      crudBuilder(context, state);
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends TopNavigationBarLayoutCubitScreenCrud<Cubit,
 | 
			
		||||
        CrudLoaded<SuccessType>> {
 | 
			
		||||
  const TopNavigationBarLayoutCubitScreenCrudItem({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<CrudState>, SuccessType extends Object?>
 | 
			
		||||
    extends TopNavigationBarLayoutCubitScreenCrud<Cubit,
 | 
			
		||||
        CrudListLoaded<SuccessType>> {
 | 
			
		||||
  const TopNavigationBarLayoutCubitScreenCrudList({
 | 
			
		||||
    super.custom,
 | 
			
		||||
    super.height = 60,
 | 
			
		||||
    super.key,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
@ -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<Widget>? 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<Widget>? 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<Widget>? 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<Widget>? 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
 | 
			
		||||
@ -15,5 +15,6 @@
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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';
 | 
			
		||||
 | 
			
		||||
@ -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';
 | 
			
		||||
 | 
			
		||||
@ -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';
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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',
 | 
			
		||||
          ),
 | 
			
		||||
 | 
			
		||||
@ -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(),
 | 
			
		||||
 | 
			
		||||
@ -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'),
 | 
			
		||||
          ),
 | 
			
		||||
 | 
			
		||||
@ -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'),
 | 
			
		||||
          ),
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7
									
								
								packages/wyatt_ui_layout/example/macos/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,7 @@
 | 
			
		||||
# Flutter-related
 | 
			
		||||
**/Flutter/ephemeral/
 | 
			
		||||
**/Pods/
 | 
			
		||||
 | 
			
		||||
# Xcode-related
 | 
			
		||||
**/dgph
 | 
			
		||||
**/xcuserdata/
 | 
			
		||||
@ -0,0 +1 @@
 | 
			
		||||
#include "ephemeral/Flutter-Generated.xcconfig"
 | 
			
		||||
@ -0,0 +1 @@
 | 
			
		||||
#include "ephemeral/Flutter-Generated.xcconfig"
 | 
			
		||||
@ -0,0 +1,10 @@
 | 
			
		||||
//
 | 
			
		||||
//  Generated file. Do not edit.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import FlutterMacOS
 | 
			
		||||
import Foundation
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
 | 
			
		||||
}
 | 
			
		||||
@ -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 = "<group>"; };
 | 
			
		||||
		335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
 | 
			
		||||
		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 = "<group>"; };
 | 
			
		||||
		33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
 | 
			
		||||
		33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
 | 
			
		||||
		33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; };
 | 
			
		||||
		33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; };
 | 
			
		||||
		33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
 | 
			
		||||
		33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
 | 
			
		||||
		33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
 | 
			
		||||
		33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
 | 
			
		||||
		33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
 | 
			
		||||
		33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
 | 
			
		||||
		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
 | 
			
		||||
		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
 | 
			
		||||
/* 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 = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		33CC10E42044A3C60003C045 = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				33FAB671232836740065AC1E /* Runner */,
 | 
			
		||||
				33CEB47122A05771004F2AC0 /* Flutter */,
 | 
			
		||||
				33CC10EE2044A3C60003C045 /* Products */,
 | 
			
		||||
				D73912EC22F37F3D000D13A0 /* Frameworks */,
 | 
			
		||||
			);
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		33CC10EE2044A3C60003C045 /* Products */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				33CC10ED2044A3C60003C045 /* example.app */,
 | 
			
		||||
			);
 | 
			
		||||
			name = Products;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		33CC11242044D66E0003C045 /* Resources */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				33CC10F22044A3C60003C045 /* Assets.xcassets */,
 | 
			
		||||
				33CC10F42044A3C60003C045 /* MainMenu.xib */,
 | 
			
		||||
				33CC10F72044A3C60003C045 /* Info.plist */,
 | 
			
		||||
			);
 | 
			
		||||
			name = Resources;
 | 
			
		||||
			path = ..;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		33CEB47122A05771004F2AC0 /* Flutter */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
 | 
			
		||||
				33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
 | 
			
		||||
				33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
 | 
			
		||||
				33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
 | 
			
		||||
			);
 | 
			
		||||
			path = Flutter;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		33FAB671232836740065AC1E /* Runner */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				33CC10F02044A3C60003C045 /* AppDelegate.swift */,
 | 
			
		||||
				33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
 | 
			
		||||
				33E51913231747F40026EE4D /* DebugProfile.entitlements */,
 | 
			
		||||
				33E51914231749380026EE4D /* Release.entitlements */,
 | 
			
		||||
				33CC11242044D66E0003C045 /* Resources */,
 | 
			
		||||
				33BA886A226E78AF003329D5 /* Configs */,
 | 
			
		||||
			);
 | 
			
		||||
			path = Runner;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
		D73912EC22F37F3D000D13A0 /* Frameworks */ = {
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
			);
 | 
			
		||||
			name = Frameworks;
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
/* 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 = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
/* 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 */;
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>IDEDidComputeMac32BitWarning</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
@ -0,0 +1,87 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Scheme
 | 
			
		||||
   LastUpgradeVersion = "1300"
 | 
			
		||||
   version = "1.3">
 | 
			
		||||
   <BuildAction
 | 
			
		||||
      parallelizeBuildables = "YES"
 | 
			
		||||
      buildImplicitDependencies = "YES">
 | 
			
		||||
      <BuildActionEntries>
 | 
			
		||||
         <BuildActionEntry
 | 
			
		||||
            buildForTesting = "YES"
 | 
			
		||||
            buildForRunning = "YES"
 | 
			
		||||
            buildForProfiling = "YES"
 | 
			
		||||
            buildForArchiving = "YES"
 | 
			
		||||
            buildForAnalyzing = "YES">
 | 
			
		||||
            <BuildableReference
 | 
			
		||||
               BuildableIdentifier = "primary"
 | 
			
		||||
               BlueprintIdentifier = "33CC10EC2044A3C60003C045"
 | 
			
		||||
               BuildableName = "example.app"
 | 
			
		||||
               BlueprintName = "Runner"
 | 
			
		||||
               ReferencedContainer = "container:Runner.xcodeproj">
 | 
			
		||||
            </BuildableReference>
 | 
			
		||||
         </BuildActionEntry>
 | 
			
		||||
      </BuildActionEntries>
 | 
			
		||||
   </BuildAction>
 | 
			
		||||
   <TestAction
 | 
			
		||||
      buildConfiguration = "Debug"
 | 
			
		||||
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
 | 
			
		||||
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
 | 
			
		||||
      shouldUseLaunchSchemeArgsEnv = "YES">
 | 
			
		||||
      <MacroExpansion>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
 | 
			
		||||
            BuildableName = "example.app"
 | 
			
		||||
            BlueprintName = "Runner"
 | 
			
		||||
            ReferencedContainer = "container:Runner.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </MacroExpansion>
 | 
			
		||||
      <Testables>
 | 
			
		||||
      </Testables>
 | 
			
		||||
   </TestAction>
 | 
			
		||||
   <LaunchAction
 | 
			
		||||
      buildConfiguration = "Debug"
 | 
			
		||||
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
 | 
			
		||||
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
 | 
			
		||||
      launchStyle = "0"
 | 
			
		||||
      useCustomWorkingDirectory = "NO"
 | 
			
		||||
      ignoresPersistentStateOnLaunch = "NO"
 | 
			
		||||
      debugDocumentVersioning = "YES"
 | 
			
		||||
      debugServiceExtension = "internal"
 | 
			
		||||
      allowLocationSimulation = "YES">
 | 
			
		||||
      <BuildableProductRunnable
 | 
			
		||||
         runnableDebuggingMode = "0">
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
 | 
			
		||||
            BuildableName = "example.app"
 | 
			
		||||
            BlueprintName = "Runner"
 | 
			
		||||
            ReferencedContainer = "container:Runner.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </BuildableProductRunnable>
 | 
			
		||||
   </LaunchAction>
 | 
			
		||||
   <ProfileAction
 | 
			
		||||
      buildConfiguration = "Profile"
 | 
			
		||||
      shouldUseLaunchSchemeArgsEnv = "YES"
 | 
			
		||||
      savedToolIdentifier = ""
 | 
			
		||||
      useCustomWorkingDirectory = "NO"
 | 
			
		||||
      debugDocumentVersioning = "YES">
 | 
			
		||||
      <BuildableProductRunnable
 | 
			
		||||
         runnableDebuggingMode = "0">
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
            BlueprintIdentifier = "33CC10EC2044A3C60003C045"
 | 
			
		||||
            BuildableName = "example.app"
 | 
			
		||||
            BlueprintName = "Runner"
 | 
			
		||||
            ReferencedContainer = "container:Runner.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </BuildableProductRunnable>
 | 
			
		||||
   </ProfileAction>
 | 
			
		||||
   <AnalyzeAction
 | 
			
		||||
      buildConfiguration = "Debug">
 | 
			
		||||
   </AnalyzeAction>
 | 
			
		||||
   <ArchiveAction
 | 
			
		||||
      buildConfiguration = "Release"
 | 
			
		||||
      revealArchiveInOrganizer = "YES">
 | 
			
		||||
   </ArchiveAction>
 | 
			
		||||
</Scheme>
 | 
			
		||||
							
								
								
									
										7
									
								
								packages/wyatt_ui_layout/example/macos/Runner.xcworkspace/contents.xcworkspacedata
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,7 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Workspace
 | 
			
		||||
   version = "1.0">
 | 
			
		||||
   <FileRef
 | 
			
		||||
      location = "group:Runner.xcodeproj">
 | 
			
		||||
   </FileRef>
 | 
			
		||||
</Workspace>
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>IDEDidComputeMac32BitWarning</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
@ -0,0 +1,9 @@
 | 
			
		||||
import Cocoa
 | 
			
		||||
import FlutterMacOS
 | 
			
		||||
 | 
			
		||||
@NSApplicationMain
 | 
			
		||||
class AppDelegate: FlutterAppDelegate {
 | 
			
		||||
  override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
 | 
			
		||||
    return true
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -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"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
		 After Width: | Height: | Size: 101 KiB  | 
| 
		 After Width: | Height: | Size: 5.5 KiB  | 
| 
		 After Width: | Height: | Size: 520 B  | 
| 
		 After Width: | Height: | Size: 14 KiB  | 
| 
		 After Width: | Height: | Size: 1.0 KiB  | 
| 
		 After Width: | Height: | Size: 36 KiB  | 
| 
		 After Width: | Height: | Size: 2.2 KiB  | 
@ -0,0 +1,343 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
 | 
			
		||||
    <dependencies>
 | 
			
		||||
        <deployment identifier="macosx"/>
 | 
			
		||||
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
 | 
			
		||||
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
 | 
			
		||||
    </dependencies>
 | 
			
		||||
    <objects>
 | 
			
		||||
        <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
 | 
			
		||||
            <connections>
 | 
			
		||||
                <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
 | 
			
		||||
            </connections>
 | 
			
		||||
        </customObject>
 | 
			
		||||
        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
 | 
			
		||||
        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
 | 
			
		||||
        <customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Runner" customModuleProvider="target">
 | 
			
		||||
            <connections>
 | 
			
		||||
                <outlet property="applicationMenu" destination="uQy-DD-JDr" id="XBo-yE-nKs"/>
 | 
			
		||||
                <outlet property="mainFlutterWindow" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
 | 
			
		||||
            </connections>
 | 
			
		||||
        </customObject>
 | 
			
		||||
        <customObject id="YLy-65-1bz" customClass="NSFontManager"/>
 | 
			
		||||
        <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
 | 
			
		||||
            <items>
 | 
			
		||||
                <menuItem title="APP_NAME" id="1Xt-HY-uBw">
 | 
			
		||||
                    <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                    <menu key="submenu" title="APP_NAME" systemMenu="apple" id="uQy-DD-JDr">
 | 
			
		||||
                        <items>
 | 
			
		||||
                            <menuItem title="About APP_NAME" id="5kV-Vb-QxS">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
 | 
			
		||||
                            <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
 | 
			
		||||
                            <menuItem title="Services" id="NMo-om-nkz">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
 | 
			
		||||
                            <menuItem title="Hide APP_NAME" keyEquivalent="h" id="Olw-nP-bQN">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Show All" id="Kd2-mp-pUS">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
 | 
			
		||||
                            <menuItem title="Quit APP_NAME" keyEquivalent="q" id="4sb-4s-VLi">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                        </items>
 | 
			
		||||
                    </menu>
 | 
			
		||||
                </menuItem>
 | 
			
		||||
                <menuItem title="Edit" id="5QF-Oa-p0T">
 | 
			
		||||
                    <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                    <menu key="submenu" title="Edit" id="W48-6f-4Dl">
 | 
			
		||||
                        <items>
 | 
			
		||||
                            <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
 | 
			
		||||
                            <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="cut:" target="-1" id="YJe-68-I9s"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Delete" id="pa3-QI-u2k">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
 | 
			
		||||
                            <menuItem title="Find" id="4EN-yA-p0u">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <menu key="submenu" title="Find" id="1b7-l0-nxx">
 | 
			
		||||
                                    <items>
 | 
			
		||||
                                        <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                    </items>
 | 
			
		||||
                                </menu>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
 | 
			
		||||
                                    <items>
 | 
			
		||||
                                        <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
 | 
			
		||||
                                        <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                    </items>
 | 
			
		||||
                                </menu>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Substitutions" id="9ic-FL-obx">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
 | 
			
		||||
                                    <items>
 | 
			
		||||
                                        <menuItem title="Show Substitutions" id="z6F-FW-3nz">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
 | 
			
		||||
                                        <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Smart Quotes" id="hQb-2v-fYv">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Smart Dashes" id="rgM-f4-ycn">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Smart Links" id="cwL-P1-jid">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Data Detectors" id="tRr-pd-1PS">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Text Replacement" id="HFQ-gK-NFA">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                    </items>
 | 
			
		||||
                                </menu>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Transformations" id="2oI-Rn-ZJC">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
 | 
			
		||||
                                    <items>
 | 
			
		||||
                                        <menuItem title="Make Upper Case" id="vmV-6d-7jI">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Make Lower Case" id="d9M-CD-aMd">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Capitalize" id="UEZ-Bs-lqG">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                    </items>
 | 
			
		||||
                                </menu>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Speech" id="xrE-MZ-jX0">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
 | 
			
		||||
                                    <items>
 | 
			
		||||
                                        <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                        <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
 | 
			
		||||
                                            <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                            <connections>
 | 
			
		||||
                                                <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
 | 
			
		||||
                                            </connections>
 | 
			
		||||
                                        </menuItem>
 | 
			
		||||
                                    </items>
 | 
			
		||||
                                </menu>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                        </items>
 | 
			
		||||
                    </menu>
 | 
			
		||||
                </menuItem>
 | 
			
		||||
                <menuItem title="View" id="H8h-7b-M4v">
 | 
			
		||||
                    <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                    <menu key="submenu" title="View" id="HyV-fh-RgO">
 | 
			
		||||
                        <items>
 | 
			
		||||
                            <menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="toggleFullScreen:" target="-1" id="dU3-MA-1Rq"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                        </items>
 | 
			
		||||
                    </menu>
 | 
			
		||||
                </menuItem>
 | 
			
		||||
                <menuItem title="Window" id="aUF-d1-5bR">
 | 
			
		||||
                    <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                    <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
 | 
			
		||||
                        <items>
 | 
			
		||||
                            <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem title="Zoom" id="R4o-n2-Eq4">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                            <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
 | 
			
		||||
                            <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
 | 
			
		||||
                                <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                                <connections>
 | 
			
		||||
                                    <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
 | 
			
		||||
                                </connections>
 | 
			
		||||
                            </menuItem>
 | 
			
		||||
                        </items>
 | 
			
		||||
                    </menu>
 | 
			
		||||
                </menuItem>
 | 
			
		||||
                <menuItem title="Help" id="EPT-qC-fAb">
 | 
			
		||||
                    <modifierMask key="keyEquivalentModifierMask"/>
 | 
			
		||||
                    <menu key="submenu" title="Help" systemMenu="help" id="rJ0-wn-3NY"/>
 | 
			
		||||
                </menuItem>
 | 
			
		||||
            </items>
 | 
			
		||||
            <point key="canvasLocation" x="142" y="-258"/>
 | 
			
		||||
        </menu>
 | 
			
		||||
        <window title="APP_NAME" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g" customClass="MainFlutterWindow" customModule="Runner" customModuleProvider="target">
 | 
			
		||||
            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
 | 
			
		||||
            <rect key="contentRect" x="335" y="390" width="800" height="600"/>
 | 
			
		||||
            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1577"/>
 | 
			
		||||
            <view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
 | 
			
		||||
                <rect key="frame" x="0.0" y="0.0" width="800" height="600"/>
 | 
			
		||||
                <autoresizingMask key="autoresizingMask"/>
 | 
			
		||||
            </view>
 | 
			
		||||
        </window>
 | 
			
		||||
    </objects>
 | 
			
		||||
</document>
 | 
			
		||||
@ -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.
 | 
			
		||||
@ -0,0 +1,2 @@
 | 
			
		||||
#include "../../Flutter/Flutter-Debug.xcconfig"
 | 
			
		||||
#include "Warnings.xcconfig"
 | 
			
		||||
@ -0,0 +1,2 @@
 | 
			
		||||
#include "../../Flutter/Flutter-Release.xcconfig"
 | 
			
		||||
#include "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
 | 
			
		||||
@ -0,0 +1,12 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>com.apple.security.app-sandbox</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
	<key>com.apple.security.cs.allow-jit</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
	<key>com.apple.security.network.server</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
							
								
								
									
										32
									
								
								packages/wyatt_ui_layout/example/macos/Runner/Info.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,32 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>CFBundleDevelopmentRegion</key>
 | 
			
		||||
	<string>$(DEVELOPMENT_LANGUAGE)</string>
 | 
			
		||||
	<key>CFBundleExecutable</key>
 | 
			
		||||
	<string>$(EXECUTABLE_NAME)</string>
 | 
			
		||||
	<key>CFBundleIconFile</key>
 | 
			
		||||
	<string></string>
 | 
			
		||||
	<key>CFBundleIdentifier</key>
 | 
			
		||||
	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
 | 
			
		||||
	<key>CFBundleInfoDictionaryVersion</key>
 | 
			
		||||
	<string>6.0</string>
 | 
			
		||||
	<key>CFBundleName</key>
 | 
			
		||||
	<string>$(PRODUCT_NAME)</string>
 | 
			
		||||
	<key>CFBundlePackageType</key>
 | 
			
		||||
	<string>APPL</string>
 | 
			
		||||
	<key>CFBundleShortVersionString</key>
 | 
			
		||||
	<string>$(FLUTTER_BUILD_NAME)</string>
 | 
			
		||||
	<key>CFBundleVersion</key>
 | 
			
		||||
	<string>$(FLUTTER_BUILD_NUMBER)</string>
 | 
			
		||||
	<key>LSMinimumSystemVersion</key>
 | 
			
		||||
	<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
 | 
			
		||||
	<key>NSHumanReadableCopyright</key>
 | 
			
		||||
	<string>$(PRODUCT_COPYRIGHT)</string>
 | 
			
		||||
	<key>NSMainNibFile</key>
 | 
			
		||||
	<string>MainMenu</string>
 | 
			
		||||
	<key>NSPrincipalClass</key>
 | 
			
		||||
	<string>NSApplication</string>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
@ -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()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>com.apple.security.app-sandbox</key>
 | 
			
		||||
	<true/>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								packages/wyatt_ui_layout/example/web/favicon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 917 B  | 
							
								
								
									
										
											BIN
										
									
								
								packages/wyatt_ui_layout/example/web/icons/Icon-192.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								packages/wyatt_ui_layout/example/web/icons/Icon-512.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 8.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								packages/wyatt_ui_layout/example/web/icons/Icon-maskable-192.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								packages/wyatt_ui_layout/example/web/icons/Icon-maskable-512.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 20 KiB  | 
							
								
								
									
										59
									
								
								packages/wyatt_ui_layout/example/web/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,59 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html>
 | 
			
		||||
<head>
 | 
			
		||||
  <!--
 | 
			
		||||
    If you are serving your web app in a path other than the root, change the
 | 
			
		||||
    href value below to reflect the base path you are serving from.
 | 
			
		||||
 | 
			
		||||
    The path provided below has to start and end with a slash "/" in order for
 | 
			
		||||
    it to work correctly.
 | 
			
		||||
 | 
			
		||||
    For more details:
 | 
			
		||||
    * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
 | 
			
		||||
 | 
			
		||||
    This is a placeholder for base href that will be replaced by the value of
 | 
			
		||||
    the `--base-href` argument provided to `flutter build`.
 | 
			
		||||
  -->
 | 
			
		||||
  <base href="$FLUTTER_BASE_HREF">
 | 
			
		||||
 | 
			
		||||
  <meta charset="UTF-8">
 | 
			
		||||
  <meta content="IE=Edge" http-equiv="X-UA-Compatible">
 | 
			
		||||
  <meta name="description" content="A new Flutter project.">
 | 
			
		||||
 | 
			
		||||
  <!-- iOS meta tags & icons -->
 | 
			
		||||
  <meta name="apple-mobile-web-app-capable" content="yes">
 | 
			
		||||
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
 | 
			
		||||
  <meta name="apple-mobile-web-app-title" content="example">
 | 
			
		||||
  <link rel="apple-touch-icon" href="icons/Icon-192.png">
 | 
			
		||||
 | 
			
		||||
  <!-- Favicon -->
 | 
			
		||||
  <link rel="icon" type="image/png" href="favicon.png"/>
 | 
			
		||||
 | 
			
		||||
  <title>example</title>
 | 
			
		||||
  <link rel="manifest" href="manifest.json">
 | 
			
		||||
 | 
			
		||||
  <script>
 | 
			
		||||
    // The value below is injected by flutter build, do not touch.
 | 
			
		||||
    var serviceWorkerVersion = null;
 | 
			
		||||
  </script>
 | 
			
		||||
  <!-- This script adds the flutter initialization JS code -->
 | 
			
		||||
  <script src="flutter.js" defer></script>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
  <script>
 | 
			
		||||
    window.addEventListener('load', function(ev) {
 | 
			
		||||
      // Download main.dart.js
 | 
			
		||||
      _flutter.loader.loadEntrypoint({
 | 
			
		||||
        serviceWorker: {
 | 
			
		||||
          serviceWorkerVersion: serviceWorkerVersion,
 | 
			
		||||
        },
 | 
			
		||||
        onEntrypointLoaded: function(engineInitializer) {
 | 
			
		||||
          engineInitializer.initializeEngine().then(function(appRunner) {
 | 
			
		||||
            appRunner.runApp();
 | 
			
		||||
          });
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  </script>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										35
									
								
								packages/wyatt_ui_layout/example/web/manifest.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -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"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<Widget>? 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,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -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,
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -14,5 +14,4 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
export './bases/bases.dart';
 | 
			
		||||
export './crud/crud.dart';
 | 
			
		||||
export './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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<Widget> children;
 | 
			
		||||
  final double verticalGap;
 | 
			
		||||
  final double horizontalGap;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    if (children.isEmpty) {
 | 
			
		||||
      return const SizedBox.shrink();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    final childrenLeft = <Widget>[];
 | 
			
		||||
    final childrenRight = <Widget>[];
 | 
			
		||||
 | 
			
		||||
    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,
 | 
			
		||||
              ),
 | 
			
		||||
            ),
 | 
			
		||||
          ],
 | 
			
		||||
        ),
 | 
			
		||||
      ],
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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<Widget>? 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,
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
/// 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});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -14,6 +14,5 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
export 'app_bar_layout_cubit_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';
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
/// 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,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
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,
 | 
			
		||||
      );
 | 
			
		||||
}
 | 
			
		||||
@ -14,6 +14,6 @@
 | 
			
		||||
// You should have received a copy of the GNU General Public License
 | 
			
		||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
export './app_bar_layout_cubit_consumer_screen.dart';
 | 
			
		||||
export './bottom_bar_layout_cubit_consumer_screen.dart';
 | 
			
		||||
export './frame_layout_cubit_consumer_screen.dart';
 | 
			
		||||
export './bottom_navigation_bar_layout.dart';
 | 
			
		||||
export './frame_layout.dart';
 | 
			
		||||
export './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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
/// 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<T extends TopBarComponent>
 | 
			
		||||
    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<TopAppBarComponent> {
 | 
			
		||||
  /// 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<TopNavigationBarComponent> {
 | 
			
		||||
  /// 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;
 | 
			
		||||
}
 | 
			
		||||
@ -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 <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
export './layouts/layouts.dart';
 | 
			
		||||
 | 
			
		||||