Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
80dffdb986 | ||
|
|
9713d1ec29 | ||
|
|
a15a065e36 | ||
|
|
cfcf9e75f8
|
||
|
|
0a11157cd0
|
||
|
|
d3184eb3e1 |
@@ -3,6 +3,38 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## 2023-05-04
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Packages with breaking changes:
|
||||||
|
|
||||||
|
- There are no breaking changes in this release.
|
||||||
|
|
||||||
|
Packages with other changes:
|
||||||
|
|
||||||
|
- [`wyatt_ui_components` - `v0.2.1`](#wyatt_ui_components---v021)
|
||||||
|
- [`wyatt_bloc_layout` - `v0.1.0+1`](#wyatt_bloc_layout---v0101)
|
||||||
|
- [`wyatt_ui_kit` - `v3.0.1`](#wyatt_ui_kit---v301)
|
||||||
|
- [`wyatt_ui_layout` - `v0.1.0+1`](#wyatt_ui_layout---v0101)
|
||||||
|
|
||||||
|
Packages with dependency updates only:
|
||||||
|
|
||||||
|
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
|
||||||
|
|
||||||
|
- `wyatt_bloc_layout` - `v0.1.0+1`
|
||||||
|
- `wyatt_ui_kit` - `v3.0.1`
|
||||||
|
- `wyatt_ui_layout` - `v0.1.0+1`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### `wyatt_ui_components` - `v0.2.1`
|
||||||
|
|
||||||
|
- **FEAT**: add floating action button component (close #191). (d3184eb3)
|
||||||
|
|
||||||
|
|
||||||
## 2023-05-03
|
## 2023-05-03
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|||||||
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
name: Wyatt-Packages
|
name: Wyatt-Packages
|
||||||
#repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages Gitea not yet supported
|
# repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
|
||||||
|
|
||||||
sdkPath: auto
|
sdkPath: auto
|
||||||
|
|
||||||
@@ -15,10 +15,10 @@ command:
|
|||||||
updateGitTagRefs: true
|
updateGitTagRefs: true
|
||||||
linkToCommits: false # Gitea not yet supported
|
linkToCommits: false # Gitea not yet supported
|
||||||
workspaceChangelog: true
|
workspaceChangelog: true
|
||||||
includeCommitId: true
|
includeCommitId: false # Generate error in Melos 3...
|
||||||
branch: master
|
branch: master
|
||||||
message: |
|
message: |
|
||||||
chore(release): publish packages 🎉
|
chore(release): publish packages
|
||||||
|
|
||||||
{new_package_versions}
|
{new_package_versions}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
## 0.1.0+1
|
||||||
|
|
||||||
|
- Update a dependency to the latest release.
|
||||||
|
|
||||||
## 0.1.0
|
## 0.1.0
|
||||||
|
|
||||||
> Note: This release has breaking changes.
|
> Note: This release has breaking changes.
|
||||||
|
|||||||
@@ -39,13 +39,13 @@ dependencies:
|
|||||||
version: ^2.0.1
|
version: ^2.0.1
|
||||||
wyatt_ui_layout:
|
wyatt_ui_layout:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.1.0
|
version: ^0.1.0+1
|
||||||
wyatt_crud_bloc:
|
wyatt_crud_bloc:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.1.1
|
version: ^0.1.1
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.2.0
|
version: ^0.2.1
|
||||||
wyatt_component_copy_with_extension:
|
wyatt_component_copy_with_extension:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.0.1
|
version: ^2.0.1
|
||||||
|
|||||||
@@ -23,12 +23,17 @@ import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
|||||||
mixin CrudMixin<Cubit extends bloc_base.Cubit<dynamic>,
|
mixin CrudMixin<Cubit extends bloc_base.Cubit<dynamic>,
|
||||||
SuccessState extends CrudSuccess> {
|
SuccessState extends CrudSuccess> {
|
||||||
Widget errorBuilder(BuildContext context, CrudError state) =>
|
Widget errorBuilder(BuildContext context, CrudError state) =>
|
||||||
context.components.errorComponent.call(
|
context.components.error != null
|
||||||
message: (state.message != null) ? TextWrapper(state.message!) : null,
|
? context.components.errorComponent.call(
|
||||||
);
|
message:
|
||||||
|
(state.message != null) ? TextWrapper(state.message!) : null,
|
||||||
|
)
|
||||||
|
: const SizedBox.shrink();
|
||||||
|
|
||||||
Widget loadingBuilder(BuildContext context, CrudLoading state) =>
|
Widget loadingBuilder(BuildContext context, CrudLoading state) =>
|
||||||
context.components.loader ?? const SizedBox.shrink();
|
context.components.loader != null
|
||||||
|
? context.components.loaderComponent.call()
|
||||||
|
: const CircularProgressIndicator();
|
||||||
|
|
||||||
Widget initialBuilder(BuildContext context, CrudInitial state) =>
|
Widget initialBuilder(BuildContext context, CrudInitial state) =>
|
||||||
const SizedBox.shrink();
|
const SizedBox.shrink();
|
||||||
|
|||||||
+1
@@ -26,6 +26,7 @@ abstract class FrameLayoutGridCubitScreenCrudList<
|
|||||||
super.customAppBar,
|
super.customAppBar,
|
||||||
super.customBottomNavBar,
|
super.customBottomNavBar,
|
||||||
super.height = 60,
|
super.height = 60,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -26,6 +26,7 @@ abstract class FrameLayoutCubitScreen<Cubit extends bloc_base.Cubit<State>,
|
|||||||
const FrameLayoutCubitScreen({
|
const FrameLayoutCubitScreen({
|
||||||
this.customAppBar,
|
this.customAppBar,
|
||||||
this.customBottomNavBar,
|
this.customBottomNavBar,
|
||||||
|
this.scaffoldFieldsWrapper,
|
||||||
this.height = 60,
|
this.height = 60,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
@@ -34,12 +35,14 @@ abstract class FrameLayoutCubitScreen<Cubit extends bloc_base.Cubit<State>,
|
|||||||
final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
|
final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
|
||||||
customBottomNavBar;
|
customBottomNavBar;
|
||||||
final double height;
|
final double height;
|
||||||
|
final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget parent(BuildContext context, Widget child) => FrameLayout(
|
Widget parent(BuildContext context, Widget child) => FrameLayout(
|
||||||
customAppBar: customAppBar,
|
customAppBar: customAppBar,
|
||||||
customBottomNavBar: customBottomNavBar,
|
customBottomNavBar: customBottomNavBar,
|
||||||
height: height,
|
height: height,
|
||||||
|
scaffoldFieldsWrapper: scaffoldFieldsWrapper,
|
||||||
body: child,
|
body: child,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -29,6 +29,7 @@ abstract class FrameLayoutCubitScreenCrud<
|
|||||||
super.customBottomNavBar,
|
super.customBottomNavBar,
|
||||||
super.height,
|
super.height,
|
||||||
super.key,
|
super.key,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
+1
@@ -25,6 +25,7 @@ abstract class FrameLayoutCubitScreenCrudItem<
|
|||||||
super.customAppBar,
|
super.customAppBar,
|
||||||
super.customBottomNavBar,
|
super.customBottomNavBar,
|
||||||
super.height = 60,
|
super.height = 60,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -25,6 +25,7 @@ abstract class FrameLayoutCubitScreenCrudList<
|
|||||||
super.customAppBar,
|
super.customAppBar,
|
||||||
super.customBottomNavBar,
|
super.customBottomNavBar,
|
||||||
super.height = 60,
|
super.height = 60,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -25,6 +25,7 @@ abstract class TopAppBarGridLayoutCubitScreenCrudList<
|
|||||||
const TopAppBarGridLayoutCubitScreenCrudList({
|
const TopAppBarGridLayoutCubitScreenCrudList({
|
||||||
super.custom,
|
super.custom,
|
||||||
super.height = 60,
|
super.height = 60,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -26,16 +26,19 @@ abstract class TopAppBarLayoutCubitScreen<Cubit extends bloc_base.Cubit<State>,
|
|||||||
const TopAppBarLayoutCubitScreen({
|
const TopAppBarLayoutCubitScreen({
|
||||||
this.custom,
|
this.custom,
|
||||||
this.height = 60,
|
this.height = 60,
|
||||||
|
this.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
final double height;
|
final double height;
|
||||||
final TopAppBarComponent? Function(TopAppBarComponent?)? custom;
|
final TopAppBarComponent? Function(TopAppBarComponent?)? custom;
|
||||||
|
final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget parent(BuildContext context, Widget child) => TopAppBarLayout(
|
Widget parent(BuildContext context, Widget child) => TopAppBarLayout(
|
||||||
height: height,
|
height: height,
|
||||||
custom: custom,
|
custom: custom,
|
||||||
|
scaffoldFieldsWrapper: scaffoldFieldsWrapper,
|
||||||
body: child,
|
body: child,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -27,6 +27,7 @@ abstract class TopAppBarLayoutCubitScreenCrud<
|
|||||||
const TopAppBarLayoutCubitScreenCrud({
|
const TopAppBarLayoutCubitScreenCrud({
|
||||||
super.custom,
|
super.custom,
|
||||||
super.height,
|
super.height,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+1
@@ -24,6 +24,7 @@ abstract class TopAppBarLayoutCubitScreenCrudItem<
|
|||||||
const TopAppBarLayoutCubitScreenCrudItem({
|
const TopAppBarLayoutCubitScreenCrudItem({
|
||||||
super.custom,
|
super.custom,
|
||||||
super.height = 60,
|
super.height = 60,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -24,6 +24,7 @@ abstract class TopAppBarLayoutCubitScreenCrudList<
|
|||||||
const TopAppBarLayoutCubitScreenCrudList({
|
const TopAppBarLayoutCubitScreenCrudList({
|
||||||
super.custom,
|
super.custom,
|
||||||
super.height = 60,
|
super.height = 60,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: wyatt_bloc_layout
|
name: wyatt_bloc_layout
|
||||||
description: Layouts based on bloc helper library
|
description: Layouts based on bloc helper library
|
||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_bloc_layout
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_bloc_layout
|
||||||
version: 0.1.0
|
version: 0.1.0+1
|
||||||
|
|
||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ dependencies:
|
|||||||
|
|
||||||
wyatt_ui_layout:
|
wyatt_ui_layout:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.1.0
|
version: ^0.1.0+1
|
||||||
|
|
||||||
wyatt_crud_bloc:
|
wyatt_crud_bloc:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
@@ -27,7 +27,7 @@ dependencies:
|
|||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.2.0
|
version: ^0.2.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test: { sdk: flutter }
|
flutter_test: { sdk: flutter }
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ dependencies:
|
|||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.2.0
|
version: ^0.2.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
build_runner: ^2.3.3
|
build_runner: ^2.3.3
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
## 0.2.1
|
||||||
|
|
||||||
|
- **FEAT**: add floating action button component (close #191). (d3184eb3)
|
||||||
|
|
||||||
## 0.2.0
|
## 0.2.0
|
||||||
|
|
||||||
> Note: This release has breaking changes.
|
> Note: This release has breaking changes.
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ export './buttons/buttons.dart';
|
|||||||
export './cards/cards.dart';
|
export './cards/cards.dart';
|
||||||
export './component.dart';
|
export './component.dart';
|
||||||
export './error/error.dart';
|
export './error/error.dart';
|
||||||
|
export './floating_buttons/floating_buttons.dart';
|
||||||
export './gradients/gradients.dart';
|
export './gradients/gradients.dart';
|
||||||
export './loader/loader.dart';
|
export './loader/loader.dart';
|
||||||
export './rich_text_builder/rich_text_builder.dart';
|
export './rich_text_builder/rich_text_builder.dart';
|
||||||
|
|||||||
+107
@@ -0,0 +1,107 @@
|
|||||||
|
// Copyright (C) 2023 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_component_copy_with_extension/wyatt_component_copy_with_extension.dart';
|
||||||
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
|
||||||
|
part 'floating_action_button_component.g.dart';
|
||||||
|
|
||||||
|
@ComponentProxyExtension()
|
||||||
|
abstract class FloatingActionButtonComponent extends Component
|
||||||
|
with CopyWithMixin<$FloatingActionButtonComponentCWProxy> {
|
||||||
|
const FloatingActionButtonComponent({
|
||||||
|
this.child,
|
||||||
|
this.tooltip,
|
||||||
|
this.foregroundColor,
|
||||||
|
this.backgroundColor,
|
||||||
|
this.focusColor,
|
||||||
|
this.hoverColor,
|
||||||
|
this.splashColor,
|
||||||
|
this.heroTag,
|
||||||
|
this.onPressed,
|
||||||
|
this.mouseCursor,
|
||||||
|
this.elevation,
|
||||||
|
this.focusElevation,
|
||||||
|
this.hoverElevation,
|
||||||
|
this.highlightElevation,
|
||||||
|
this.disabledElevation,
|
||||||
|
this.mini,
|
||||||
|
this.shape,
|
||||||
|
this.clipBehavior,
|
||||||
|
this.isExtended,
|
||||||
|
this.focusNode,
|
||||||
|
this.autofocus,
|
||||||
|
this.materialTapTargetSize,
|
||||||
|
this.enableFeedback,
|
||||||
|
this.extendedIconLabelSpacing,
|
||||||
|
this.extendedPadding,
|
||||||
|
this.extendedTextStyle,
|
||||||
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
|
final Widget? child;
|
||||||
|
|
||||||
|
final String? tooltip;
|
||||||
|
|
||||||
|
final Color? foregroundColor;
|
||||||
|
|
||||||
|
final Color? backgroundColor;
|
||||||
|
|
||||||
|
final Color? focusColor;
|
||||||
|
|
||||||
|
final Color? hoverColor;
|
||||||
|
|
||||||
|
final Color? splashColor;
|
||||||
|
|
||||||
|
final Object? heroTag;
|
||||||
|
|
||||||
|
final VoidCallback? onPressed;
|
||||||
|
|
||||||
|
final MouseCursor? mouseCursor;
|
||||||
|
|
||||||
|
final double? elevation;
|
||||||
|
|
||||||
|
final double? focusElevation;
|
||||||
|
|
||||||
|
final double? hoverElevation;
|
||||||
|
|
||||||
|
final double? highlightElevation;
|
||||||
|
|
||||||
|
final double? disabledElevation;
|
||||||
|
|
||||||
|
final bool? mini;
|
||||||
|
|
||||||
|
final ShapeBorder? shape;
|
||||||
|
|
||||||
|
final Clip? clipBehavior;
|
||||||
|
|
||||||
|
final bool? isExtended;
|
||||||
|
|
||||||
|
final FocusNode? focusNode;
|
||||||
|
|
||||||
|
final bool? autofocus;
|
||||||
|
|
||||||
|
final MaterialTapTargetSize? materialTapTargetSize;
|
||||||
|
|
||||||
|
final bool? enableFeedback;
|
||||||
|
|
||||||
|
final double? extendedIconLabelSpacing;
|
||||||
|
|
||||||
|
final EdgeInsetsGeometry? extendedPadding;
|
||||||
|
|
||||||
|
final TextStyle? extendedTextStyle;
|
||||||
|
}
|
||||||
+69
@@ -0,0 +1,69 @@
|
|||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
part of 'floating_action_button_component.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// ComponentProxyGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
abstract class $FloatingActionButtonComponentCWProxy {
|
||||||
|
FloatingActionButtonComponent child(Widget? child);
|
||||||
|
FloatingActionButtonComponent tooltip(String? tooltip);
|
||||||
|
FloatingActionButtonComponent foregroundColor(Color? foregroundColor);
|
||||||
|
FloatingActionButtonComponent backgroundColor(Color? backgroundColor);
|
||||||
|
FloatingActionButtonComponent focusColor(Color? focusColor);
|
||||||
|
FloatingActionButtonComponent hoverColor(Color? hoverColor);
|
||||||
|
FloatingActionButtonComponent splashColor(Color? splashColor);
|
||||||
|
FloatingActionButtonComponent heroTag(Object? heroTag);
|
||||||
|
FloatingActionButtonComponent onPressed(void Function()? onPressed);
|
||||||
|
FloatingActionButtonComponent mouseCursor(MouseCursor? mouseCursor);
|
||||||
|
FloatingActionButtonComponent elevation(double? elevation);
|
||||||
|
FloatingActionButtonComponent focusElevation(double? focusElevation);
|
||||||
|
FloatingActionButtonComponent hoverElevation(double? hoverElevation);
|
||||||
|
FloatingActionButtonComponent highlightElevation(double? highlightElevation);
|
||||||
|
FloatingActionButtonComponent disabledElevation(double? disabledElevation);
|
||||||
|
FloatingActionButtonComponent mini(bool? mini);
|
||||||
|
FloatingActionButtonComponent shape(ShapeBorder? shape);
|
||||||
|
FloatingActionButtonComponent clipBehavior(Clip? clipBehavior);
|
||||||
|
FloatingActionButtonComponent isExtended(bool? isExtended);
|
||||||
|
FloatingActionButtonComponent focusNode(FocusNode? focusNode);
|
||||||
|
FloatingActionButtonComponent autofocus(bool? autofocus);
|
||||||
|
FloatingActionButtonComponent materialTapTargetSize(
|
||||||
|
MaterialTapTargetSize? materialTapTargetSize);
|
||||||
|
FloatingActionButtonComponent enableFeedback(bool? enableFeedback);
|
||||||
|
FloatingActionButtonComponent extendedIconLabelSpacing(
|
||||||
|
double? extendedIconLabelSpacing);
|
||||||
|
FloatingActionButtonComponent extendedPadding(
|
||||||
|
EdgeInsetsGeometry? extendedPadding);
|
||||||
|
FloatingActionButtonComponent extendedTextStyle(TextStyle? extendedTextStyle);
|
||||||
|
FloatingActionButtonComponent key(Key? key);
|
||||||
|
FloatingActionButtonComponent call({
|
||||||
|
Widget? child,
|
||||||
|
String? tooltip,
|
||||||
|
Color? foregroundColor,
|
||||||
|
Color? backgroundColor,
|
||||||
|
Color? focusColor,
|
||||||
|
Color? hoverColor,
|
||||||
|
Color? splashColor,
|
||||||
|
Object? heroTag,
|
||||||
|
void Function()? onPressed,
|
||||||
|
MouseCursor? mouseCursor,
|
||||||
|
double? elevation,
|
||||||
|
double? focusElevation,
|
||||||
|
double? hoverElevation,
|
||||||
|
double? highlightElevation,
|
||||||
|
double? disabledElevation,
|
||||||
|
bool? mini,
|
||||||
|
ShapeBorder? shape,
|
||||||
|
Clip? clipBehavior,
|
||||||
|
bool? isExtended,
|
||||||
|
FocusNode? focusNode,
|
||||||
|
bool? autofocus,
|
||||||
|
MaterialTapTargetSize? materialTapTargetSize,
|
||||||
|
bool? enableFeedback,
|
||||||
|
double? extendedIconLabelSpacing,
|
||||||
|
EdgeInsetsGeometry? extendedPadding,
|
||||||
|
TextStyle? extendedTextStyle,
|
||||||
|
Key? key,
|
||||||
|
});
|
||||||
|
}
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
// Copyright (C) 2023 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 './floating_action_button_component.dart';
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
import 'package:copy_with_extension/copy_with_extension.dart';
|
import 'package:copy_with_extension/copy_with_extension.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
|
import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
|
||||||
|
import 'package:wyatt_ui_components/src/domain/entities/floating_buttons/floating_action_button_component.dart';
|
||||||
part 'component_theme_data.g.dart';
|
part 'component_theme_data.g.dart';
|
||||||
|
|
||||||
/// {@template component_theme_data}
|
/// {@template component_theme_data}
|
||||||
@@ -41,6 +42,7 @@ class ComponentThemeData {
|
|||||||
PortfolioCardComponent? portfolioCard,
|
PortfolioCardComponent? portfolioCard,
|
||||||
QuoteCardComponent? quoteCard,
|
QuoteCardComponent? quoteCard,
|
||||||
SkillCardComponent? skillCard,
|
SkillCardComponent? skillCard,
|
||||||
|
FloatingActionButtonComponent? floatingActionButton,
|
||||||
}) =>
|
}) =>
|
||||||
ComponentThemeData.raw(
|
ComponentThemeData.raw(
|
||||||
topAppBar: topAppBar,
|
topAppBar: topAppBar,
|
||||||
@@ -58,6 +60,7 @@ class ComponentThemeData {
|
|||||||
portfolioCard: portfolioCard,
|
portfolioCard: portfolioCard,
|
||||||
quoteCard: quoteCard,
|
quoteCard: quoteCard,
|
||||||
skillCard: skillCard,
|
skillCard: skillCard,
|
||||||
|
floatingActionButton: floatingActionButton,
|
||||||
);
|
);
|
||||||
|
|
||||||
/// {@macro component_theme_data}
|
/// {@macro component_theme_data}
|
||||||
@@ -78,6 +81,7 @@ class ComponentThemeData {
|
|||||||
portfolioCard: other.portfolioCard,
|
portfolioCard: other.portfolioCard,
|
||||||
quoteCard: other.quoteCard,
|
quoteCard: other.quoteCard,
|
||||||
skillCard: other.skillCard,
|
skillCard: other.skillCard,
|
||||||
|
floatingActionButton: other.floatingActionButton,
|
||||||
);
|
);
|
||||||
|
|
||||||
/// Create a [ComponentThemeData] given a set of exact values. Most values
|
/// Create a [ComponentThemeData] given a set of exact values. Most values
|
||||||
@@ -102,6 +106,7 @@ class ComponentThemeData {
|
|||||||
this.portfolioCard,
|
this.portfolioCard,
|
||||||
this.quoteCard,
|
this.quoteCard,
|
||||||
this.skillCard,
|
this.skillCard,
|
||||||
|
this.floatingActionButton,
|
||||||
});
|
});
|
||||||
|
|
||||||
R _get<T extends Component, R>(T? component, R? returned) {
|
R _get<T extends Component, R>(T? component, R? returned) {
|
||||||
@@ -173,4 +178,8 @@ class ComponentThemeData {
|
|||||||
final SymbolButtonComponent? symbolButton;
|
final SymbolButtonComponent? symbolButton;
|
||||||
$SymbolButtonComponentCWProxy get symbolButtonComponent =>
|
$SymbolButtonComponentCWProxy get symbolButtonComponent =>
|
||||||
_get(symbolButton, symbolButton?.copyWith);
|
_get(symbolButton, symbolButton?.copyWith);
|
||||||
|
|
||||||
|
final FloatingActionButtonComponent? floatingActionButton;
|
||||||
|
$FloatingActionButtonComponentCWProxy get floatingActionButtonComponent =>
|
||||||
|
_get(floatingActionButton, floatingActionButton?.copyWith);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,9 @@ abstract class _$ComponentThemeDataCWProxy {
|
|||||||
|
|
||||||
ComponentThemeData skillCard(SkillCardComponent? skillCard);
|
ComponentThemeData skillCard(SkillCardComponent? skillCard);
|
||||||
|
|
||||||
|
ComponentThemeData floatingActionButton(
|
||||||
|
FloatingActionButtonComponent? floatingActionButton);
|
||||||
|
|
||||||
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
|
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
|
||||||
///
|
///
|
||||||
/// Usage
|
/// Usage
|
||||||
@@ -63,6 +66,7 @@ abstract class _$ComponentThemeDataCWProxy {
|
|||||||
PortfolioCardComponent? portfolioCard,
|
PortfolioCardComponent? portfolioCard,
|
||||||
QuoteCardComponent? quoteCard,
|
QuoteCardComponent? quoteCard,
|
||||||
SkillCardComponent? skillCard,
|
SkillCardComponent? skillCard,
|
||||||
|
FloatingActionButtonComponent? floatingActionButton,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,6 +140,11 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
|
|||||||
ComponentThemeData skillCard(SkillCardComponent? skillCard) =>
|
ComponentThemeData skillCard(SkillCardComponent? skillCard) =>
|
||||||
this(skillCard: skillCard);
|
this(skillCard: skillCard);
|
||||||
|
|
||||||
|
@override
|
||||||
|
ComponentThemeData floatingActionButton(
|
||||||
|
FloatingActionButtonComponent? floatingActionButton) =>
|
||||||
|
this(floatingActionButton: floatingActionButton);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
||||||
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
|
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
|
||||||
@@ -160,6 +169,7 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
|
|||||||
Object? portfolioCard = const $CopyWithPlaceholder(),
|
Object? portfolioCard = const $CopyWithPlaceholder(),
|
||||||
Object? quoteCard = const $CopyWithPlaceholder(),
|
Object? quoteCard = const $CopyWithPlaceholder(),
|
||||||
Object? skillCard = const $CopyWithPlaceholder(),
|
Object? skillCard = const $CopyWithPlaceholder(),
|
||||||
|
Object? floatingActionButton = const $CopyWithPlaceholder(),
|
||||||
}) {
|
}) {
|
||||||
return ComponentThemeData(
|
return ComponentThemeData(
|
||||||
topAppBar: topAppBar == const $CopyWithPlaceholder()
|
topAppBar: topAppBar == const $CopyWithPlaceholder()
|
||||||
@@ -222,6 +232,10 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
|
|||||||
? _value.skillCard
|
? _value.skillCard
|
||||||
// ignore: cast_nullable_to_non_nullable
|
// ignore: cast_nullable_to_non_nullable
|
||||||
: skillCard as SkillCardComponent?,
|
: skillCard as SkillCardComponent?,
|
||||||
|
floatingActionButton: floatingActionButton == const $CopyWithPlaceholder()
|
||||||
|
? _value.floatingActionButton
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: floatingActionButton as FloatingActionButtonComponent?,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: wyatt_ui_components
|
name: wyatt_ui_components
|
||||||
description: Components that can be implemented in any application with copy constructor.
|
description: Components that can be implemented in any application with copy constructor.
|
||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_ui_components
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_ui_components
|
||||||
version: 0.2.0
|
version: 0.2.1
|
||||||
|
|
||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
## 3.0.1
|
||||||
|
|
||||||
|
- Update a dependency to the latest release.
|
||||||
|
|
||||||
## 3.0.0
|
## 3.0.0
|
||||||
|
|
||||||
> Note: This release has breaking changes.
|
> Note: This release has breaking changes.
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ dependencies:
|
|||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.2.0
|
version: ^0.2.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test: { sdk: flutter }
|
flutter_test: { sdk: flutter }
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: wyatt_ui_kit
|
name: wyatt_ui_kit
|
||||||
description: UIKit and Design System used in Wyatt Studio.
|
description: UIKit and Design System used in Wyatt Studio.
|
||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_ui_kit
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_ui_kit
|
||||||
version: 3.0.0
|
version: 3.0.1
|
||||||
|
|
||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ dependencies:
|
|||||||
version: ^2.0.1
|
version: ^2.0.1
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.2.0
|
version: ^0.2.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
build_runner: ^2.3.3
|
build_runner: ^2.3.3
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
## 0.1.0+1
|
||||||
|
|
||||||
|
- Update a dependency to the latest release.
|
||||||
|
|
||||||
## 0.1.0
|
## 0.1.0
|
||||||
|
|
||||||
> Note: This release has breaking changes.
|
> Note: This release has breaking changes.
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ dependencies:
|
|||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.2.0
|
version: ^0.2.1
|
||||||
wyatt_component_copy_with_extension:
|
wyatt_component_copy_with_extension:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^2.0.1
|
version: ^2.0.1
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
// Copyright (C) 2023 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 './scaffold_fields_wrapper.dart';
|
||||||
@@ -0,0 +1,244 @@
|
|||||||
|
// Copyright (C) 2023 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/gestures.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class ScaffoldFieldsWrapper {
|
||||||
|
ScaffoldFieldsWrapper({
|
||||||
|
this.extendBody,
|
||||||
|
this.extendBodyBehindAppBar,
|
||||||
|
this.floatingActionButtonLocation,
|
||||||
|
this.floatingActionButtonAnimator,
|
||||||
|
this.persistentFooterButtons,
|
||||||
|
this.persistentFooterAlignment,
|
||||||
|
this.drawer,
|
||||||
|
this.onDrawerChanged,
|
||||||
|
this.endDrawer,
|
||||||
|
this.onEndDrawerChanged,
|
||||||
|
this.drawerScrimColor,
|
||||||
|
this.backgroundColor,
|
||||||
|
this.bottomSheet,
|
||||||
|
this.resizeToAvoidBottomInset,
|
||||||
|
this.primary,
|
||||||
|
this.drawerDragStartBehavior,
|
||||||
|
this.drawerEdgeDragWidth,
|
||||||
|
this.drawerEnableOpenDragGesture,
|
||||||
|
this.endDrawerEnableOpenDragGesture,
|
||||||
|
this.restorationId,
|
||||||
|
});
|
||||||
|
|
||||||
|
final bool? extendBody;
|
||||||
|
|
||||||
|
/// If true, and an appBar is specified, then the height of the body is
|
||||||
|
/// extended to include the height of the app bar and the top of the body
|
||||||
|
/// is aligned with the top of the app bar.
|
||||||
|
///
|
||||||
|
/// This is useful if the app bar's [AppBar.backgroundColor] is not
|
||||||
|
/// completely opaque.
|
||||||
|
///
|
||||||
|
/// This property is false by default. It must not be null.
|
||||||
|
///
|
||||||
|
/// See also:
|
||||||
|
///
|
||||||
|
/// * [extendBody], which extends the height of the body to the bottom
|
||||||
|
/// of the scaffold.
|
||||||
|
final bool? extendBodyBehindAppBar;
|
||||||
|
|
||||||
|
/// Responsible for determining where the floatingActionButton should go.
|
||||||
|
///
|
||||||
|
/// If null, the [ScaffoldState] will use
|
||||||
|
/// the default location, [FloatingActionButtonLocation.endFloat].
|
||||||
|
final FloatingActionButtonLocation? floatingActionButtonLocation;
|
||||||
|
|
||||||
|
/// Animator to move the floatingActionButton to a
|
||||||
|
/// new [floatingActionButtonLocation].
|
||||||
|
///
|
||||||
|
/// If null, the [ScaffoldState] will use the default animator,
|
||||||
|
/// [FloatingActionButtonAnimator.scaling].
|
||||||
|
final FloatingActionButtonAnimator? floatingActionButtonAnimator;
|
||||||
|
|
||||||
|
/// A set of buttons that are displayed at the bottom of the scaffold.
|
||||||
|
///
|
||||||
|
/// Typically this is a list of [TextButton] widgets. These buttons are
|
||||||
|
/// persistently visible, even if the body of the scaffold scrolls.
|
||||||
|
///
|
||||||
|
/// These widgets will be wrapped in an [OverflowBar].
|
||||||
|
///
|
||||||
|
/// The [persistentFooterButtons] are rendered above the
|
||||||
|
/// bottomNavigationBar but below the body.
|
||||||
|
final List<Widget>? persistentFooterButtons;
|
||||||
|
|
||||||
|
/// The alignment of the [persistentFooterButtons] inside the [OverflowBar].
|
||||||
|
///
|
||||||
|
/// Defaults to [AlignmentDirectional.centerEnd].
|
||||||
|
final AlignmentDirectional? persistentFooterAlignment;
|
||||||
|
|
||||||
|
/// A panel displayed to the side of the body, often hidden on mobile
|
||||||
|
/// devices. Swipes in from either left-to-right ([TextDirection.ltr]) or
|
||||||
|
/// right-to-left ([TextDirection.rtl])
|
||||||
|
///
|
||||||
|
/// Typically a [Drawer].
|
||||||
|
///
|
||||||
|
/// To open the drawer, use the [ScaffoldState.openDrawer] function.
|
||||||
|
///
|
||||||
|
/// To close the drawer, use either [ScaffoldState.closeDrawer],
|
||||||
|
/// [Navigator.pop] or press the escape key on the keyboard.
|
||||||
|
///
|
||||||
|
/// {@tool dartpad}
|
||||||
|
/// To disable the drawer edge swipe on mobile, set the
|
||||||
|
/// [Scaffold.drawerEnableOpenDragGesture] to false. Then, use
|
||||||
|
/// [ScaffoldState.openDrawer] to open the drawer and [Navigator.pop] to close
|
||||||
|
/// it.
|
||||||
|
///
|
||||||
|
/// ** See code in examples/api/lib/material/scaffold/scaffold.drawer.0.dart **
|
||||||
|
/// {@end-tool}
|
||||||
|
final Widget? drawer;
|
||||||
|
|
||||||
|
/// Optional callback that is called when the [Scaffold.drawer]
|
||||||
|
/// is opened or closed.
|
||||||
|
final DrawerCallback? onDrawerChanged;
|
||||||
|
|
||||||
|
/// A panel displayed to the side of the body, often hidden on mobile
|
||||||
|
/// devices. Swipes in from right-to-left ([TextDirection.ltr]) or
|
||||||
|
/// left-to-right ([TextDirection.rtl])
|
||||||
|
///
|
||||||
|
/// Typically a [Drawer].
|
||||||
|
///
|
||||||
|
/// To open the drawer, use the [ScaffoldState.openEndDrawer] function.
|
||||||
|
///
|
||||||
|
/// To close the drawer, use either [ScaffoldState.closeEndDrawer],
|
||||||
|
/// [Navigator.pop]
|
||||||
|
/// or press the escape key on the keyboard.
|
||||||
|
///
|
||||||
|
/// {@tool dartpad}
|
||||||
|
/// To disable the drawer edge swipe, set the
|
||||||
|
/// [Scaffold.endDrawerEnableOpenDragGesture] to false. Then, use
|
||||||
|
/// [ScaffoldState.openEndDrawer] to open the drawer and [Navigator.pop] to
|
||||||
|
/// close it.
|
||||||
|
///
|
||||||
|
/// ** See code in examples/api/lib/material/scaffold/scaffold.end_drawer.0.dart **
|
||||||
|
/// {@end-tool}
|
||||||
|
final Widget? endDrawer;
|
||||||
|
|
||||||
|
/// Optional callback that is called when the [Scaffold.endDrawer]
|
||||||
|
/// is opened or closed.
|
||||||
|
final DrawerCallback? onEndDrawerChanged;
|
||||||
|
|
||||||
|
/// The color to use for the scrim that obscures primary content while
|
||||||
|
/// a drawer is open.
|
||||||
|
///
|
||||||
|
/// If this is null, then [DrawerThemeData.scrimColor] is used. If that
|
||||||
|
/// is also null, then it defaults to [Colors.black54].
|
||||||
|
final Color? drawerScrimColor;
|
||||||
|
|
||||||
|
/// The color of the [Material] widget that underlies the entire Scaffold.
|
||||||
|
///
|
||||||
|
/// The theme's [ThemeData.scaffoldBackgroundColor] by default.
|
||||||
|
final Color? backgroundColor;
|
||||||
|
|
||||||
|
/// The persistent bottom sheet to display.
|
||||||
|
///
|
||||||
|
/// A persistent bottom sheet shows information that supplements the primary
|
||||||
|
/// content of the app. A persistent bottom sheet remains visible even when
|
||||||
|
/// the user interacts with other parts of the app.
|
||||||
|
///
|
||||||
|
/// A closely related widget is a modal bottom sheet, which is an alternative
|
||||||
|
/// to a menu or a dialog and prevents the user from interacting with the rest
|
||||||
|
/// of the app. Modal bottom sheets can be created and displayed with the
|
||||||
|
/// [showModalBottomSheet] function.
|
||||||
|
///
|
||||||
|
/// Unlike the persistent bottom sheet displayed by [showBottomSheet]
|
||||||
|
/// this bottom sheet is not a [LocalHistoryEntry] and cannot be dismissed
|
||||||
|
/// with the scaffold appbar's back button.
|
||||||
|
///
|
||||||
|
/// If a persistent bottom sheet created with [showBottomSheet] is already
|
||||||
|
/// visible, it must be closed before building the Scaffold with a new
|
||||||
|
/// [bottomSheet].
|
||||||
|
///
|
||||||
|
/// The value of [bottomSheet] can be any widget at all. It's unlikely to
|
||||||
|
/// actually be a [BottomSheet], which is used by the implementations of
|
||||||
|
/// [showBottomSheet] and [showModalBottomSheet]. Typically it's a widget
|
||||||
|
/// that includes [Material].
|
||||||
|
///
|
||||||
|
/// See also:
|
||||||
|
///
|
||||||
|
/// * [showBottomSheet], which displays a bottom sheet as a route that can
|
||||||
|
/// be dismissed with the scaffold's back button.
|
||||||
|
/// * [showModalBottomSheet], which displays a modal bottom sheet.
|
||||||
|
/// * [BottomSheetThemeData], which can be used to customize the default
|
||||||
|
/// bottom sheet property values when using a [BottomSheet].
|
||||||
|
final Widget? bottomSheet;
|
||||||
|
|
||||||
|
/// If true the body and the scaffold's floating widgets should size
|
||||||
|
/// themselves to avoid the onscreen keyboard whose height is defined by the
|
||||||
|
/// ambient [MediaQuery]'s [MediaQueryData.viewInsets] `bottom` property.
|
||||||
|
///
|
||||||
|
/// For example, if there is an onscreen keyboard displayed above the
|
||||||
|
/// scaffold, the body can be resized to avoid overlapping the keyboard, which
|
||||||
|
/// prevents widgets inside the body from being obscured by the keyboard.
|
||||||
|
///
|
||||||
|
/// Defaults to true.
|
||||||
|
final bool? resizeToAvoidBottomInset;
|
||||||
|
|
||||||
|
/// Whether this scaffold is being displayed at the top of the screen.
|
||||||
|
///
|
||||||
|
/// If true then the height of the appBar will be extended by the height
|
||||||
|
/// of the screen's status bar, i.e. the top padding for [MediaQuery].
|
||||||
|
///
|
||||||
|
/// The default value of this property, like the default value of
|
||||||
|
/// [AppBar.primary], is true.
|
||||||
|
final bool? primary;
|
||||||
|
|
||||||
|
/// {@macro flutter.material.DrawerController.dragStartBehavior}
|
||||||
|
final DragStartBehavior? drawerDragStartBehavior;
|
||||||
|
|
||||||
|
/// The width of the area within which a horizontal swipe will open the
|
||||||
|
/// drawer.
|
||||||
|
///
|
||||||
|
/// By default, the value used is 20.0 added to the padding edge of
|
||||||
|
/// `MediaQuery.of(context).padding` that corresponds to the surrounding
|
||||||
|
/// [TextDirection]. This ensures that the drag area for notched devices is
|
||||||
|
/// not obscured. For example, if `TextDirection.of(context)` is set to
|
||||||
|
/// [TextDirection.ltr], 20.0 will be added to
|
||||||
|
/// `MediaQuery.of(context).padding.left`.
|
||||||
|
final double? drawerEdgeDragWidth;
|
||||||
|
|
||||||
|
/// Determines if the [Scaffold.drawer] can be opened with a drag
|
||||||
|
/// gesture on mobile.
|
||||||
|
///
|
||||||
|
/// On desktop platforms, the drawer is not draggable.
|
||||||
|
///
|
||||||
|
/// By default, the drag gesture is enabled on mobile.
|
||||||
|
final bool? drawerEnableOpenDragGesture;
|
||||||
|
|
||||||
|
/// Determines if the [Scaffold.endDrawer] can be opened with a
|
||||||
|
/// gesture on mobile.
|
||||||
|
///
|
||||||
|
/// On desktop platforms, the drawer is not draggable.
|
||||||
|
///
|
||||||
|
/// By default, the drag gesture is enabled on mobile.
|
||||||
|
final bool? endDrawerEnableOpenDragGesture;
|
||||||
|
|
||||||
|
/// Restoration ID to save and restore the state of the [Scaffold].
|
||||||
|
///
|
||||||
|
/// If it is non-null, the scaffold will persist and restore whether the
|
||||||
|
/// [drawer] and [endDrawer] was open or closed.
|
||||||
|
///
|
||||||
|
/// The state of this widget is persisted in a [RestorationBucket] claimed
|
||||||
|
/// from the surrounding [RestorationScope] using the provided restoration ID.
|
||||||
|
final String? restorationId;
|
||||||
|
}
|
||||||
+35
@@ -14,8 +14,10 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
import 'package:wyatt_ui_layout/src/core/scaffold_fields_wrapper.dart';
|
||||||
import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
|
import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
|
||||||
|
|
||||||
/// {@template bottom_navigation_bar_layout}
|
/// {@template bottom_navigation_bar_layout}
|
||||||
@@ -27,6 +29,7 @@ class BottomNavigationBarLayout extends StructuralLayout {
|
|||||||
const BottomNavigationBarLayout({
|
const BottomNavigationBarLayout({
|
||||||
required this.body,
|
required this.body,
|
||||||
this.custom,
|
this.custom,
|
||||||
|
this.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -38,6 +41,8 @@ class BottomNavigationBarLayout extends StructuralLayout {
|
|||||||
final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
|
final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
|
||||||
custom;
|
custom;
|
||||||
|
|
||||||
|
final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => Scaffold(
|
Widget build(BuildContext context) => Scaffold(
|
||||||
body: body,
|
body: body,
|
||||||
@@ -45,5 +50,35 @@ class BottomNavigationBarLayout extends StructuralLayout {
|
|||||||
context.components.bottomNavigationBar,
|
context.components.bottomNavigationBar,
|
||||||
) ??
|
) ??
|
||||||
context.components.bottomNavigationBar,
|
context.components.bottomNavigationBar,
|
||||||
|
floatingActionButtonLocation:
|
||||||
|
scaffoldFieldsWrapper?.floatingActionButtonLocation,
|
||||||
|
floatingActionButtonAnimator:
|
||||||
|
scaffoldFieldsWrapper?.floatingActionButtonAnimator,
|
||||||
|
persistentFooterButtons: scaffoldFieldsWrapper?.persistentFooterButtons,
|
||||||
|
persistentFooterAlignment:
|
||||||
|
scaffoldFieldsWrapper?.persistentFooterAlignment ??
|
||||||
|
AlignmentDirectional.centerEnd,
|
||||||
|
drawer: scaffoldFieldsWrapper?.drawer,
|
||||||
|
onDrawerChanged: scaffoldFieldsWrapper?.onDrawerChanged,
|
||||||
|
endDrawer: scaffoldFieldsWrapper?.endDrawer,
|
||||||
|
onEndDrawerChanged: scaffoldFieldsWrapper?.onEndDrawerChanged,
|
||||||
|
bottomSheet: scaffoldFieldsWrapper?.bottomSheet,
|
||||||
|
backgroundColor: scaffoldFieldsWrapper?.backgroundColor,
|
||||||
|
resizeToAvoidBottomInset:
|
||||||
|
scaffoldFieldsWrapper?.resizeToAvoidBottomInset,
|
||||||
|
primary: scaffoldFieldsWrapper?.primary ?? true,
|
||||||
|
drawerDragStartBehavior:
|
||||||
|
scaffoldFieldsWrapper?.drawerDragStartBehavior ??
|
||||||
|
DragStartBehavior.start,
|
||||||
|
extendBody: scaffoldFieldsWrapper?.extendBody ?? false,
|
||||||
|
extendBodyBehindAppBar:
|
||||||
|
scaffoldFieldsWrapper?.extendBodyBehindAppBar ?? false,
|
||||||
|
drawerScrimColor: scaffoldFieldsWrapper?.drawerScrimColor,
|
||||||
|
drawerEdgeDragWidth: scaffoldFieldsWrapper?.drawerEdgeDragWidth,
|
||||||
|
drawerEnableOpenDragGesture:
|
||||||
|
scaffoldFieldsWrapper?.drawerEnableOpenDragGesture ?? true,
|
||||||
|
endDrawerEnableOpenDragGesture:
|
||||||
|
scaffoldFieldsWrapper?.endDrawerEnableOpenDragGesture ?? true,
|
||||||
|
restorationId: scaffoldFieldsWrapper?.restorationId,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+45
-1
@@ -14,8 +14,10 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
import 'package:wyatt_ui_layout/src/core/scaffold_fields_wrapper.dart';
|
||||||
import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
|
import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
|
||||||
|
|
||||||
/// {@template frame_layout}
|
/// {@template frame_layout}
|
||||||
@@ -33,7 +35,9 @@ class FrameLayout extends StructuralLayout {
|
|||||||
required this.body,
|
required this.body,
|
||||||
this.customAppBar,
|
this.customAppBar,
|
||||||
this.customBottomNavBar,
|
this.customBottomNavBar,
|
||||||
|
this.customFloatingActionButton,
|
||||||
this.height = 60,
|
this.height = 60,
|
||||||
|
this.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -44,12 +48,19 @@ class FrameLayout extends StructuralLayout {
|
|||||||
final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
|
final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
|
||||||
customBottomNavBar;
|
customBottomNavBar;
|
||||||
|
|
||||||
|
/// An optional function that can be used to customize the
|
||||||
|
/// floating action button
|
||||||
|
final FloatingActionButtonComponent? Function(FloatingActionButtonComponent?)?
|
||||||
|
customFloatingActionButton;
|
||||||
|
|
||||||
/// The main content of the layout.
|
/// The main content of the layout.
|
||||||
final Widget body;
|
final Widget body;
|
||||||
|
|
||||||
/// The height of the top app bar.
|
/// The height of the top app bar.
|
||||||
final double height;
|
final double height;
|
||||||
|
|
||||||
|
final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => Scaffold(
|
Widget build(BuildContext context) => Scaffold(
|
||||||
appBar: (customAppBar?.call(context.components.topAppBar) != null ||
|
appBar: (customAppBar?.call(context.components.topAppBar) != null ||
|
||||||
@@ -60,9 +71,42 @@ class FrameLayout extends StructuralLayout {
|
|||||||
context.components.topAppBar!,
|
context.components.topAppBar!,
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
body: body,
|
floatingActionButton: customFloatingActionButton
|
||||||
|
?.call(context.components.floatingActionButton) ??
|
||||||
|
context.components.floatingActionButton,
|
||||||
bottomNavigationBar:
|
bottomNavigationBar:
|
||||||
customBottomNavBar?.call(context.components.bottomNavigationBar) ??
|
customBottomNavBar?.call(context.components.bottomNavigationBar) ??
|
||||||
context.components.bottomNavigationBar,
|
context.components.bottomNavigationBar,
|
||||||
|
body: body,
|
||||||
|
floatingActionButtonLocation:
|
||||||
|
scaffoldFieldsWrapper?.floatingActionButtonLocation,
|
||||||
|
floatingActionButtonAnimator:
|
||||||
|
scaffoldFieldsWrapper?.floatingActionButtonAnimator,
|
||||||
|
persistentFooterButtons: scaffoldFieldsWrapper?.persistentFooterButtons,
|
||||||
|
persistentFooterAlignment:
|
||||||
|
scaffoldFieldsWrapper?.persistentFooterAlignment ??
|
||||||
|
AlignmentDirectional.centerEnd,
|
||||||
|
drawer: scaffoldFieldsWrapper?.drawer,
|
||||||
|
onDrawerChanged: scaffoldFieldsWrapper?.onDrawerChanged,
|
||||||
|
endDrawer: scaffoldFieldsWrapper?.endDrawer,
|
||||||
|
onEndDrawerChanged: scaffoldFieldsWrapper?.onEndDrawerChanged,
|
||||||
|
bottomSheet: scaffoldFieldsWrapper?.bottomSheet,
|
||||||
|
backgroundColor: scaffoldFieldsWrapper?.backgroundColor,
|
||||||
|
resizeToAvoidBottomInset:
|
||||||
|
scaffoldFieldsWrapper?.resizeToAvoidBottomInset,
|
||||||
|
primary: scaffoldFieldsWrapper?.primary ?? true,
|
||||||
|
drawerDragStartBehavior:
|
||||||
|
scaffoldFieldsWrapper?.drawerDragStartBehavior ??
|
||||||
|
DragStartBehavior.start,
|
||||||
|
extendBody: scaffoldFieldsWrapper?.extendBody ?? false,
|
||||||
|
extendBodyBehindAppBar:
|
||||||
|
scaffoldFieldsWrapper?.extendBodyBehindAppBar ?? false,
|
||||||
|
drawerScrimColor: scaffoldFieldsWrapper?.drawerScrimColor,
|
||||||
|
drawerEdgeDragWidth: scaffoldFieldsWrapper?.drawerEdgeDragWidth,
|
||||||
|
drawerEnableOpenDragGesture:
|
||||||
|
scaffoldFieldsWrapper?.drawerEnableOpenDragGesture ?? true,
|
||||||
|
endDrawerEnableOpenDragGesture:
|
||||||
|
scaffoldFieldsWrapper?.endDrawerEnableOpenDragGesture ?? true,
|
||||||
|
restorationId: scaffoldFieldsWrapper?.restorationId,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+37
@@ -14,8 +14,10 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||||
|
import 'package:wyatt_ui_layout/src/core/scaffold_fields_wrapper.dart';
|
||||||
import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
|
import 'package:wyatt_ui_layout/src/presentation/layouts/layout.dart';
|
||||||
|
|
||||||
/// {@template top_bar_layout}
|
/// {@template top_bar_layout}
|
||||||
@@ -37,6 +39,7 @@ abstract class TopBarLayout<T extends TopBarComponent>
|
|||||||
required this.body,
|
required this.body,
|
||||||
this.custom,
|
this.custom,
|
||||||
this.height = 60,
|
this.height = 60,
|
||||||
|
this.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -54,6 +57,8 @@ abstract class TopBarLayout<T extends TopBarComponent>
|
|||||||
/// Returns the top bar component for the given [BuildContext].
|
/// Returns the top bar component for the given [BuildContext].
|
||||||
T? child(BuildContext context);
|
T? child(BuildContext context);
|
||||||
|
|
||||||
|
final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => Scaffold(
|
Widget build(BuildContext context) => Scaffold(
|
||||||
appBar: (custom?.call(child(context)) != null || child(context) != null)
|
appBar: (custom?.call(child(context)) != null || child(context) != null)
|
||||||
@@ -63,6 +68,36 @@ abstract class TopBarLayout<T extends TopBarComponent>
|
|||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
body: body,
|
body: body,
|
||||||
|
floatingActionButtonLocation:
|
||||||
|
scaffoldFieldsWrapper?.floatingActionButtonLocation,
|
||||||
|
floatingActionButtonAnimator:
|
||||||
|
scaffoldFieldsWrapper?.floatingActionButtonAnimator,
|
||||||
|
persistentFooterButtons: scaffoldFieldsWrapper?.persistentFooterButtons,
|
||||||
|
persistentFooterAlignment:
|
||||||
|
scaffoldFieldsWrapper?.persistentFooterAlignment ??
|
||||||
|
AlignmentDirectional.centerEnd,
|
||||||
|
drawer: scaffoldFieldsWrapper?.drawer,
|
||||||
|
onDrawerChanged: scaffoldFieldsWrapper?.onDrawerChanged,
|
||||||
|
endDrawer: scaffoldFieldsWrapper?.endDrawer,
|
||||||
|
onEndDrawerChanged: scaffoldFieldsWrapper?.onEndDrawerChanged,
|
||||||
|
bottomSheet: scaffoldFieldsWrapper?.bottomSheet,
|
||||||
|
backgroundColor: scaffoldFieldsWrapper?.backgroundColor,
|
||||||
|
resizeToAvoidBottomInset:
|
||||||
|
scaffoldFieldsWrapper?.resizeToAvoidBottomInset,
|
||||||
|
primary: scaffoldFieldsWrapper?.primary ?? true,
|
||||||
|
drawerDragStartBehavior:
|
||||||
|
scaffoldFieldsWrapper?.drawerDragStartBehavior ??
|
||||||
|
DragStartBehavior.start,
|
||||||
|
extendBody: scaffoldFieldsWrapper?.extendBody ?? false,
|
||||||
|
extendBodyBehindAppBar:
|
||||||
|
scaffoldFieldsWrapper?.extendBodyBehindAppBar ?? false,
|
||||||
|
drawerScrimColor: scaffoldFieldsWrapper?.drawerScrimColor,
|
||||||
|
drawerEdgeDragWidth: scaffoldFieldsWrapper?.drawerEdgeDragWidth,
|
||||||
|
drawerEnableOpenDragGesture:
|
||||||
|
scaffoldFieldsWrapper?.drawerEnableOpenDragGesture ?? true,
|
||||||
|
endDrawerEnableOpenDragGesture:
|
||||||
|
scaffoldFieldsWrapper?.endDrawerEnableOpenDragGesture ?? true,
|
||||||
|
restorationId: scaffoldFieldsWrapper?.restorationId,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,6 +113,7 @@ class TopAppBarLayout extends TopBarLayout<TopAppBarComponent> {
|
|||||||
required super.body,
|
required super.body,
|
||||||
super.custom,
|
super.custom,
|
||||||
super.height,
|
super.height,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -98,6 +134,7 @@ class TopNavigationBarLayout extends TopBarLayout<TopNavigationBarComponent> {
|
|||||||
required super.body,
|
required super.body,
|
||||||
super.custom,
|
super.custom,
|
||||||
super.height,
|
super.height,
|
||||||
|
super.scaffoldFieldsWrapper,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -14,4 +14,5 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
export 'presentation/presentation.dart';
|
export './core/core.dart';
|
||||||
|
export './presentation/presentation.dart';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: wyatt_ui_layout
|
name: wyatt_ui_layout
|
||||||
description: Main layouts to help you build your application views.
|
description: Main layouts to help you build your application views.
|
||||||
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_ui_layout
|
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_ui_layout
|
||||||
version: 0.1.0
|
version: 0.1.0+1
|
||||||
|
|
||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ dependencies:
|
|||||||
|
|
||||||
wyatt_ui_components:
|
wyatt_ui_components:
|
||||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
version: ^0.2.0
|
version: ^0.2.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test: { sdk: flutter }
|
flutter_test: { sdk: flutter }
|
||||||
|
|||||||
Reference in New Issue
Block a user