Compare commits

...
Author SHA1 Message Date
hugo 140ca77f56 chore(release): publish packages
continuous-integration/drone/pr Build is passing
- wyatt_authentication_bloc@0.5.1
 - wyatt_bloc_layout@0.1.1
 - wyatt_ui_components@0.2.2
 - wyatt_ui_kit@3.1.0
 - wyatt_ui_layout@0.1.1
2023-08-09 11:23:18 +02:00
hugo 8adc68230c feat: add items manipulation in bottom bar component
continuous-integration/drone/pr Build is passing
2023-07-05 16:12:32 +02:00
hugo ef19191093 fix(authentication): try/catch on cache retrieve
continuous-integration/drone/pr Build is passing
2023-05-15 16:50:16 +02:00
hugo 873a3b426d feat(bloc_layout): add consumer layouts
continuous-integration/drone/pr Build is passing
2023-05-15 16:16:02 +02:00
hugo 296bb0175e feat(auth): add mocked cache data source 2023-05-15 16:15:42 +02:00
hugo 9a3ae2de5c feat(ui): export pricing card 2023-05-12 15:43:05 +02:00
malo a078f6b6b0 feat(ui_layout-bloc_layout): proxy scaffold fields 2023-05-12 12:41:02 +00:00
malo fd40d1be3d chore: export floating action button 2023-05-12 12:41:02 +00:00
hugo 952d3f8539 feat(ui): proxy some rich text parameters 2023-05-12 14:39:51 +02:00
hugo 5de3dbd5b3 build(i18n): upgrade i18n 2023-05-11 16:43:36 +02:00
hugo 874d85f29c fix: upgrade to flutter 3.10 2023-05-11 16:43:00 +02:00
hugo a82d28a6d5 feat(ui): tweak some values 2023-05-11 15:17:24 +02:00
hugo 80135a611d chore(release): publish packages
continuous-integration/drone/pr Build is passing
- wyatt_authentication_bloc@0.5.0+1
2023-05-06 11:26:54 +02:00
hugo 93873e3134 refactor(authentication): controle cache checking 2023-05-06 11:26:40 +02:00
hugo 553b6763af fix: remove models from pub ignore 2023-05-06 11:14:04 +02:00
hugo cfcf9e75f8 build: fix melos parsing error + disable commit reference to avoid null error...
continuous-integration/drone/pr Build is passing
2023-05-04 09:46:02 +02:00
hugo 0a11157cd0 chore(release): publish packages �
continuous-integration/drone/pr Build is passing
2023-05-04 09:30:52 +02:00
malo d3184eb3e1 feat: add floating action button component (close #191)
continuous-integration/drone/pr Build is passing
2023-05-03 19:06:52 +02:00
60 changed files with 1270 additions and 66 deletions
-1
View File
@@ -584,7 +584,6 @@ new_version.sh
.latest_version
.vscode/
example/
models/
build/
*.iml
+102
View File
@@ -3,6 +3,108 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## 2023-08-09
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`wyatt_authentication_bloc` - `v0.5.1`](#wyatt_authentication_bloc---v051)
- [`wyatt_bloc_layout` - `v0.1.1`](#wyatt_bloc_layout---v011)
- [`wyatt_ui_components` - `v0.2.2`](#wyatt_ui_components---v022)
- [`wyatt_ui_kit` - `v3.1.0`](#wyatt_ui_kit---v310)
- [`wyatt_ui_layout` - `v0.1.1`](#wyatt_ui_layout---v011)
---
#### `wyatt_authentication_bloc` - `v0.5.1`
- **FIX**(authentication): try/catch on cache retrieve.
- **FEAT**(auth): add mocked cache data source.
#### `wyatt_bloc_layout` - `v0.1.1`
- **FEAT**(bloc_layout): add consumer layouts.
- **FEAT**(ui_layout-bloc_layout): proxy scaffold fields.
#### `wyatt_ui_components` - `v0.2.2`
- **FIX**: upgrade to flutter 3.10.
- **FEAT**: add items manipulation in bottom bar component.
- **FEAT**(ui): export pricing card.
- **FEAT**(ui): proxy some rich text parameters.
#### `wyatt_ui_kit` - `v3.1.0`
- **FIX**: upgrade to flutter 3.10.
- **FEAT**(ui): export pricing card.
- **FEAT**(ui): proxy some rich text parameters.
- **FEAT**(ui): tweak some values.
#### `wyatt_ui_layout` - `v0.1.1`
- **FEAT**(ui_layout-bloc_layout): proxy scaffold fields.
## 2023-05-06
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`wyatt_authentication_bloc` - `v0.5.0+1`](#wyatt_authentication_bloc---v0501)
---
#### `wyatt_authentication_bloc` - `v0.5.0+1`
- **REFACTOR**(authentication): controle cache checking.
## 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
### Changes
+3 -3
View File
@@ -1,5 +1,5 @@
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
@@ -15,10 +15,10 @@ command:
updateGitTagRefs: true
linkToCommits: false # Gitea not yet supported
workspaceChangelog: true
includeCommitId: true
includeCommitId: false # Generate error in Melos 3...
branch: master
message: |
chore(release): publish packages 🎉
chore(release): publish packages
{new_package_versions}
@@ -1,3 +1,12 @@
## 0.5.1
- **FIX**(authentication): try/catch on cache retrieve.
- **FEAT**(auth): add mocked cache data source.
## 0.5.0+1
- **REFACTOR**(authentication): controle cache checking.
## 0.5.0
> Note: This release has breaking changes.
@@ -41,13 +41,17 @@ class AuthenticationFirebaseCacheDataSourceImpl<Data>
return null;
}
final jwt = await currentUser.getIdToken(true);
final currentAccount = AccountModel.fromFirebaseUser(
currentUser,
accessToken: jwt,
);
try {
final jwt = await currentUser.getIdToken(true);
final currentAccount = AccountModel.fromFirebaseUser(
currentUser,
accessToken: jwt,
);
return currentAccount;
return currentAccount;
} catch (e) {
return null;
}
}
// Already done by Firebase
@@ -0,0 +1,41 @@
// 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:wyatt_authentication_bloc/wyatt_authentication_bloc.dart';
/// {@template authentication_mock_cache_data_source_impl}
/// A data source that manages the cache strategy.
/// This implementation is mocked.
/// {@endtemplate}
class AuthenticationMockCacheDataSourceImpl<Data>
extends AuthenticationCacheDataSource<Data> {
/// {@macro authentication_mock_cache_data_source_impl}
AuthenticationMockCacheDataSourceImpl();
@override
Future<void> cacheAccount(Account account) => Future.value();
/// Always returns null.
@override
Future<Account?> getCachedAccount() async {
await Future<void>.delayed(const Duration(milliseconds: 200));
return null;
}
@override
Future<void> removeCachedAccount() => Future.value();
}
@@ -15,5 +15,6 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
export 'authentication_firebase_cache_data_source_impl.dart';
export 'authentication_mock_cache_data_source_impl.dart';
export 'authentication_secure_storage_cache_data_source_impl.dart';
export 'authentication_session_data_source_impl.dart';
@@ -40,6 +40,7 @@ abstract class AuthenticationCubit<Data>
/// {@macro authentication_cubit}
AuthenticationCubit({
required this.authenticationRepository,
this.checkForCachedAccountOnInitialization = true,
}) : super(const AuthenticationState.unknown()) {
_init();
}
@@ -47,6 +48,9 @@ abstract class AuthenticationCubit<Data>
/// The authentication repository.
final AuthenticationRepository<Data> authenticationRepository;
/// Automatically check for cached account on initialization.
final bool checkForCachedAccountOnInitialization;
/// The latest session.
AuthenticationSession<Data>? _latestSession;
@@ -56,7 +60,9 @@ abstract class AuthenticationCubit<Data>
_listenForAuthenticationChanges();
/// Check if there is a cached account.
await authenticationRepository.checkForCachedAccount();
if (checkForCachedAccountOnInitialization) {
await checkForCachedAccount();
}
}
void _listenForAuthenticationChanges() {
@@ -148,6 +154,10 @@ abstract class AuthenticationCubit<Data>
),
).call();
/// Checks for cached account.
FutureOr<void> checkForCachedAccount() async =>
authenticationRepository.checkForCachedAccount();
/// Returns latest session.
///
/// Contains latest event and latest session data (account + extra data)
@@ -1,7 +1,7 @@
name: wyatt_authentication_bloc
description: Authentication BLoC for Flutter
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_authentication_bloc
version: 0.5.0
version: 0.5.1
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
+9
View File
@@ -1,3 +1,12 @@
## 0.1.1
- **FEAT**(bloc_layout): add consumer layouts.
- **FEAT**(ui_layout-bloc_layout): proxy scaffold fields.
## 0.1.0+1
- Update a dependency to the latest release.
## 0.1.0
> Note: This release has breaking changes.
@@ -39,13 +39,13 @@ dependencies:
version: ^2.0.1
wyatt_ui_layout:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.1.0
version: ^0.1.1
wyatt_crud_bloc:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.1.1
wyatt_ui_components:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.2.0
version: ^0.2.2
wyatt_component_copy_with_extension:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^2.0.1
@@ -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_helper/wyatt_bloc_helper.dart';
abstract class CubitConsumerBase<Cubit extends bloc_base.Cubit<State>,
State extends Object> extends CubitConsumerScreen<Cubit, State> {
const CubitConsumerBase({super.key});
}
@@ -0,0 +1,31 @@
// 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';
import 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
abstract class CubitConsumerCrudBase<Cubit extends bloc_base.Cubit<CrudState>,
CrudSuccessState extends CrudSuccess>
extends CubitConsumerBase<Cubit, CrudState>
with CrudMixin<Cubit, CrudSuccessState> {
const CubitConsumerCrudBase({super.key});
@override
Widget onBuild(BuildContext context, CrudState state) =>
crudBuilder(context, state);
}
@@ -0,0 +1,25 @@
// 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';
import 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
abstract class CubitConsumerCrudItemBase<
Cubit extends bloc_base.Cubit<CrudState>,
T extends Object?> extends CubitConsumerCrudBase<Cubit, CrudLoaded<T>> {
const CubitConsumerCrudItemBase({super.key});
}
@@ -0,0 +1,25 @@
// 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';
import 'package:wyatt_crud_bloc/wyatt_crud_bloc.dart';
abstract class CubitConsumerCrudListBase<
Cubit extends bloc_base.Cubit<CrudState>,
T extends Object?> extends CubitConsumerCrudBase<Cubit, CrudListLoaded<T>> {
const CubitConsumerCrudListBase({super.key});
}
@@ -26,6 +26,7 @@ abstract class FrameLayoutGridCubitScreenCrudList<
super.customAppBar,
super.customBottomNavBar,
super.height = 60,
super.scaffoldFieldsWrapper,
super.key,
});
}
@@ -26,6 +26,7 @@ abstract class FrameLayoutCubitScreen<Cubit extends bloc_base.Cubit<State>,
const FrameLayoutCubitScreen({
this.customAppBar,
this.customBottomNavBar,
this.scaffoldFieldsWrapper,
this.height = 60,
super.key,
});
@@ -34,12 +35,14 @@ abstract class FrameLayoutCubitScreen<Cubit extends bloc_base.Cubit<State>,
final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
customBottomNavBar;
final double height;
final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
@override
Widget parent(BuildContext context, Widget child) => FrameLayout(
customAppBar: customAppBar,
customBottomNavBar: customBottomNavBar,
height: height,
scaffoldFieldsWrapper: scaffoldFieldsWrapper,
body: child,
);
}
@@ -29,6 +29,7 @@ abstract class FrameLayoutCubitScreenCrud<
super.customBottomNavBar,
super.height,
super.key,
super.scaffoldFieldsWrapper,
});
@override
@@ -25,6 +25,7 @@ abstract class FrameLayoutCubitScreenCrudItem<
super.customAppBar,
super.customBottomNavBar,
super.height = 60,
super.scaffoldFieldsWrapper,
super.key,
});
}
@@ -25,6 +25,7 @@ abstract class FrameLayoutCubitScreenCrudList<
super.customAppBar,
super.customBottomNavBar,
super.height = 60,
super.scaffoldFieldsWrapper,
super.key,
});
}
@@ -15,6 +15,10 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
export './bottom_navigation_bar_bloc_layout/bottom_navigation_bar_bloc_layout.dart';
export './cubit_consumer_base.dart';
export './cubit_consumer_crud_base.dart';
export './cubit_consumer_crud_item_base.dart';
export './cubit_consumer_crud_list_base.dart';
export './cubit_screen_base.dart';
export './cubit_screen_crud_base.dart';
export './cubit_screen_crud_item_base.dart';
+3 -3
View File
@@ -1,7 +1,7 @@
name: wyatt_bloc_layout
description: Layouts based on bloc helper library
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_bloc_layout
version: 0.1.0
version: 0.1.1
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
@@ -19,7 +19,7 @@ dependencies:
wyatt_ui_layout:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.1.0
version: ^0.1.1
wyatt_crud_bloc:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
@@ -27,7 +27,7 @@ dependencies:
wyatt_ui_components:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.2.0
version: ^0.2.2
dev_dependencies:
flutter_test: { sdk: flutter }
@@ -16,7 +16,7 @@ dependencies:
wyatt_ui_components:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.2.0
version: ^0.2.2
dev_dependencies:
build_runner: ^2.3.3
+1 -1
View File
@@ -15,7 +15,7 @@ dependencies:
flutter_bloc: ^8.1.2
flutter_localizations: { sdk: flutter }
http: ^0.13.5
intl: ^0.17.0
intl: ^0.18.0
path: ^1.8.0
petitparser: ^5.1.0
wyatt_architecture:
+11
View File
@@ -1,3 +1,14 @@
## 0.2.2
- **FIX**: upgrade to flutter 3.10.
- **FEAT**: add items manipulation in bottom bar component.
- **FEAT**(ui): export pricing card.
- **FEAT**(ui): proxy some rich text parameters.
## 0.2.1
- **FEAT**: add floating action button component (close #191). (d3184eb3)
## 0.2.0
> Note: This release has breaking changes.
@@ -17,11 +17,15 @@ class $CustomBottomNavigationBarCWProxyImpl
CustomBottomNavigationBar currentIndex(int? currentIndex) =>
this(currentIndex: currentIndex);
@override
CustomBottomNavigationBar items(List<BottomNavigationBarItem>? items) =>
this(items: items);
@override
CustomBottomNavigationBar key(Key? key) => this(key: key);
@override
CustomBottomNavigationBar call({
void Function(BuildContext, int)? onTap,
int? currentIndex,
List<BottomNavigationBarItem>? items,
Key? key,
}) =>
CustomBottomNavigationBar(
@@ -27,8 +27,11 @@ abstract class BottomNavigationBarComponent extends Component
const BottomNavigationBarComponent({
this.onTap,
this.currentIndex = 0,
this.items = const <BottomNavigationBarItem>[],
super.key,
});
final int currentIndex;
final void Function(BuildContext, int)? onTap;
final List<BottomNavigationBarItem> items;
}
@@ -9,10 +9,12 @@ part of 'bottom_navigation_bar_component.dart';
abstract class $BottomNavigationBarComponentCWProxy {
BottomNavigationBarComponent onTap(void Function(BuildContext, int)? onTap);
BottomNavigationBarComponent currentIndex(int? currentIndex);
BottomNavigationBarComponent items(List<BottomNavigationBarItem>? items);
BottomNavigationBarComponent key(Key? key);
BottomNavigationBarComponent call({
void Function(BuildContext, int)? onTap,
int? currentIndex,
List<BottomNavigationBarItem>? items,
Key? key,
});
}
@@ -19,6 +19,7 @@ export './buttons/buttons.dart';
export './cards/cards.dart';
export './component.dart';
export './error/error.dart';
export './floating_buttons/floating_buttons.dart';
export './gradients/gradients.dart';
export './loader/loader.dart';
export './rich_text_builder/rich_text_builder.dart';
@@ -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;
}
@@ -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,
});
}
@@ -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';
@@ -28,6 +28,17 @@ abstract class RichTextBuilderComponent extends Component
this.parser,
this.defaultStyle,
this.styles,
this.strutStyle,
this.textAlign,
this.textDirection,
this.locale,
this.softWrap,
this.overflow,
this.textScaleFactor,
this.maxLines,
this.semanticsLabel,
this.textWidthBasis,
this.selectionColor,
super.key,
});
@@ -52,4 +63,83 @@ abstract class RichTextBuilderComponent extends Component
/// ```
/// in "This text `is red`."
final Map<String, TextStyle>? styles;
final StrutStyle? strutStyle;
/// How the text should be aligned horizontally.
final TextAlign? textAlign;
/// The directionality of the text.
///
/// This decides how [textAlign] values like [TextAlign.start] and
/// [TextAlign.end] are interpreted.
final TextDirection? textDirection;
/// Used to select a font when the same Unicode character can
/// be rendered differently, depending on the locale.
final Locale? locale;
/// Whether the text should break at soft line breaks.
///
/// If false, the glyphs in the text will be positioned as if there
/// was unlimited horizontal space.
final bool? softWrap;
/// How visual overflow should be handled.
///
/// If this is null [TextStyle.overflow] will be used, otherwise the value
/// from the nearest [DefaultTextStyle] ancestor will be used.
final TextOverflow? overflow;
/// The number of font pixels for each logical pixel.
///
/// For example, if the text scale factor is 1.5, text will be 50% larger than
/// the specified font size.
///
/// The value given to the constructor as textScaleFactor. If null, will
/// use the [MediaQueryData.textScaleFactor] obtained from the ambient
/// [MediaQuery], or 1.0 if there is no [MediaQuery] in scope.
final double? textScaleFactor;
/// An optional maximum number of lines for the text to span, wrapping if
/// necessary.
/// If the text exceeds the given number of lines, it will be truncated
/// according to [overflow].
///
/// If this is 1, text will not wrap. Otherwise, text will be wrapped at the
/// edge of the box.
///
/// If this is null, but there is an ambient [DefaultTextStyle] that specifies
/// an explicit number for its [DefaultTextStyle.maxLines], then the
/// [DefaultTextStyle] value will take precedence. You can use a [RichText]
/// widget directly to entirely override the [DefaultTextStyle].
final int? maxLines;
/// {@template flutter.widgets.Text.semanticsLabel}
/// An alternative semantics label for this text.
///
/// If present, the semantics of this widget will contain this value instead
/// of the actual text. This will overwrite any of the semantics labels
/// applied directly to the [TextSpan]s.
///
/// This is useful for replacing abbreviations or shorthands with the full
/// text value:
///
/// ```dart
/// const Text(r'$$', semanticsLabel: 'Double dollars')
/// ```
/// {@endtemplate}
final String? semanticsLabel;
final TextWidthBasis? textWidthBasis;
/// The color to use when painting the selection.
///
/// This is ignored if [SelectionContainer.maybeOf] returns null
/// in the [BuildContext] of the [Text] widget.
///
/// If null, the ambient [DefaultSelectionStyle] is used (if any); failing
/// that, the selection color defaults to [DefaultSelectionStyle.defaultColor]
/// (semi-transparent grey).
final Color? selectionColor;
}
@@ -11,12 +11,34 @@ abstract class $RichTextBuilderComponentCWProxy {
RichTextBuilderComponent parser(RichTextParser? parser);
RichTextBuilderComponent defaultStyle(TextStyle? defaultStyle);
RichTextBuilderComponent styles(Map<String, TextStyle>? styles);
RichTextBuilderComponent strutStyle(StrutStyle? strutStyle);
RichTextBuilderComponent textAlign(TextAlign? textAlign);
RichTextBuilderComponent textDirection(TextDirection? textDirection);
RichTextBuilderComponent locale(Locale? locale);
RichTextBuilderComponent softWrap(bool? softWrap);
RichTextBuilderComponent overflow(TextOverflow? overflow);
RichTextBuilderComponent textScaleFactor(double? textScaleFactor);
RichTextBuilderComponent maxLines(int? maxLines);
RichTextBuilderComponent semanticsLabel(String? semanticsLabel);
RichTextBuilderComponent textWidthBasis(TextWidthBasis? textWidthBasis);
RichTextBuilderComponent selectionColor(Color? selectionColor);
RichTextBuilderComponent key(Key? key);
RichTextBuilderComponent call({
String? text,
RichTextParser? parser,
TextStyle? defaultStyle,
Map<String, TextStyle>? styles,
StrutStyle? strutStyle,
TextAlign? textAlign,
TextDirection? textDirection,
Locale? locale,
bool? softWrap,
TextOverflow? overflow,
double? textScaleFactor,
int? maxLines,
String? semanticsLabel,
TextWidthBasis? textWidthBasis,
Color? selectionColor,
Key? key,
});
}
@@ -41,6 +41,8 @@ class ComponentThemeData {
PortfolioCardComponent? portfolioCard,
QuoteCardComponent? quoteCard,
SkillCardComponent? skillCard,
PricingCardComponent? pricingCard,
FloatingActionButtonComponent? floatingActionButton,
}) =>
ComponentThemeData.raw(
topAppBar: topAppBar,
@@ -58,6 +60,8 @@ class ComponentThemeData {
portfolioCard: portfolioCard,
quoteCard: quoteCard,
skillCard: skillCard,
pricingCard: pricingCard,
floatingActionButton: floatingActionButton,
);
/// {@macro component_theme_data}
@@ -78,6 +82,8 @@ class ComponentThemeData {
portfolioCard: other.portfolioCard,
quoteCard: other.quoteCard,
skillCard: other.skillCard,
pricingCard: other.pricingCard,
floatingActionButton: other.floatingActionButton,
);
/// Create a [ComponentThemeData] given a set of exact values. Most values
@@ -102,6 +108,8 @@ class ComponentThemeData {
this.portfolioCard,
this.quoteCard,
this.skillCard,
this.pricingCard,
this.floatingActionButton,
});
R _get<T extends Component, R>(T? component, R? returned) {
@@ -149,6 +157,9 @@ class ComponentThemeData {
final SkillCardComponent? skillCard;
$SkillCardComponentCWProxy get skillCardComponent =>
_get(skillCard, skillCard?.copyWith);
final PricingCardComponent? pricingCard;
$PricingCardComponentCWProxy get pricingCardComponent =>
_get(pricingCard, pricingCard?.copyWith);
// Rich Text
final RichTextBuilderComponent? richTextBuilder;
@@ -173,4 +184,8 @@ class ComponentThemeData {
final SymbolButtonComponent? symbolButton;
$SymbolButtonComponentCWProxy get symbolButtonComponent =>
_get(symbolButton, symbolButton?.copyWith);
final FloatingActionButtonComponent? floatingActionButton;
$FloatingActionButtonComponentCWProxy get floatingActionButtonComponent =>
_get(floatingActionButton, floatingActionButton?.copyWith);
}
@@ -41,6 +41,11 @@ abstract class _$ComponentThemeDataCWProxy {
ComponentThemeData skillCard(SkillCardComponent? skillCard);
ComponentThemeData pricingCard(PricingCardComponent? pricingCard);
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.
///
/// Usage
@@ -63,6 +68,8 @@ abstract class _$ComponentThemeDataCWProxy {
PortfolioCardComponent? portfolioCard,
QuoteCardComponent? quoteCard,
SkillCardComponent? skillCard,
PricingCardComponent? pricingCard,
FloatingActionButtonComponent? floatingActionButton,
});
}
@@ -136,6 +143,15 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
ComponentThemeData skillCard(SkillCardComponent? skillCard) =>
this(skillCard: skillCard);
@override
ComponentThemeData pricingCard(PricingCardComponent? pricingCard) =>
this(pricingCard: pricingCard);
@override
ComponentThemeData floatingActionButton(
FloatingActionButtonComponent? floatingActionButton) =>
this(floatingActionButton: floatingActionButton);
@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.
@@ -160,6 +176,8 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
Object? portfolioCard = const $CopyWithPlaceholder(),
Object? quoteCard = const $CopyWithPlaceholder(),
Object? skillCard = const $CopyWithPlaceholder(),
Object? pricingCard = const $CopyWithPlaceholder(),
Object? floatingActionButton = const $CopyWithPlaceholder(),
}) {
return ComponentThemeData(
topAppBar: topAppBar == const $CopyWithPlaceholder()
@@ -222,6 +240,14 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
? _value.skillCard
// ignore: cast_nullable_to_non_nullable
: skillCard as SkillCardComponent?,
pricingCard: pricingCard == const $CopyWithPlaceholder()
? _value.pricingCard
// ignore: cast_nullable_to_non_nullable
: pricingCard as PricingCardComponent?,
floatingActionButton: floatingActionButton == const $CopyWithPlaceholder()
? _value.floatingActionButton
// ignore: cast_nullable_to_non_nullable
: floatingActionButton as FloatingActionButtonComponent?,
);
}
}
+2 -2
View File
@@ -1,12 +1,12 @@
name: wyatt_ui_components
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
version: 0.2.0
version: 0.2.2
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
environment:
sdk: ">=2.17.0 <3.0.0"
sdk: ">=2.19.0 <3.0.0"
dependencies:
flutter: { sdk: flutter }
+11
View File
@@ -1,3 +1,14 @@
## 3.1.0
- **FIX**: upgrade to flutter 3.10.
- **FEAT**(ui): export pricing card.
- **FEAT**(ui): proxy some rich text parameters.
- **FEAT**(ui): tweak some values.
## 3.0.1
- Update a dependency to the latest release.
## 3.0.0
> Note: This release has breaking changes.
@@ -40,10 +40,10 @@ class Buttons extends DemoPage {
),
),
const Gap(20),
Row(
const Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
children: [
FlatButtons(),
Gap(20),
SymbolButtons(),
@@ -30,10 +30,10 @@ class QuoteCards extends StatelessWidget {
style: Theme.of(context).textTheme.titleMedium,
),
const Gap(20),
Row(
const Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: const [
children: [
QuoteCard(
quote:
TextWrapper('Cupidatat reprehenderit aliqua eiusmod Lorem. '
@@ -43,9 +43,9 @@ class Loaders extends DemoPage {
radius: 57,
),
const Gap(20),
Row(
const Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
children: [
Loader(
stroke: 5,
),
+2 -1
View File
@@ -43,7 +43,8 @@ class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
final brightness = WidgetsBinding.instance.window.platformBrightness;
final brightness =
WidgetsBinding.instance.platformDispatcher.platformBrightness;
return BlocProvider(
create: (context) => AppModeCubit(
theme: defaultTheme,
+1 -1
View File
@@ -20,7 +20,7 @@ dependencies:
wyatt_ui_components:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.2.0
version: ^0.2.2
dev_dependencies:
flutter_test: { sdk: flutter }
@@ -117,9 +117,9 @@ class PricingCardTitles extends StatelessWidget {
WidgetSpan(
child: Transform.translate(
offset: const Offset(5, -15),
child: const Text(
child: Text(
'* ',
style: TextStyle(fontSize: 18),
style: titleStyle?.copyWith(fontSize: 18),
),
),
),
@@ -29,6 +29,17 @@ class RichTextBuilder extends RichTextBuilderComponent
super.parser,
super.defaultStyle,
super.styles,
super.strutStyle,
super.textAlign,
super.textDirection,
super.locale,
super.softWrap,
super.overflow,
super.textScaleFactor,
super.maxLines,
super.semanticsLabel,
super.textWidthBasis,
super.selectionColor,
super.key,
});
@@ -91,6 +102,17 @@ class RichTextBuilder extends RichTextBuilderComponent
TextSpan(children: [root.toInlineSpan(customParser)]),
textHeightBehavior:
const TextHeightBehavior(applyHeightToLastDescent: false),
strutStyle: super.strutStyle,
textAlign: super.textAlign,
textDirection: super.textDirection,
locale: super.locale,
softWrap: super.softWrap,
overflow: super.overflow,
textScaleFactor: super.textScaleFactor,
maxLines: super.maxLines,
semanticsLabel: super.semanticsLabel,
textWidthBasis: super.textWidthBasis,
selectionColor: super.selectionColor,
);
}
}
@@ -20,6 +20,34 @@ class $RichTextBuilderCWProxyImpl implements $RichTextBuilderComponentCWProxy {
RichTextBuilder styles(Map<String, TextStyle>? styles) =>
this(styles: styles);
@override
RichTextBuilder strutStyle(StrutStyle? strutStyle) =>
this(strutStyle: strutStyle);
@override
RichTextBuilder textAlign(TextAlign? textAlign) => this(textAlign: textAlign);
@override
RichTextBuilder textDirection(TextDirection? textDirection) =>
this(textDirection: textDirection);
@override
RichTextBuilder locale(Locale? locale) => this(locale: locale);
@override
RichTextBuilder softWrap(bool? softWrap) => this(softWrap: softWrap);
@override
RichTextBuilder overflow(TextOverflow? overflow) => this(overflow: overflow);
@override
RichTextBuilder textScaleFactor(double? textScaleFactor) =>
this(textScaleFactor: textScaleFactor);
@override
RichTextBuilder maxLines(int? maxLines) => this(maxLines: maxLines);
@override
RichTextBuilder semanticsLabel(String? semanticsLabel) =>
this(semanticsLabel: semanticsLabel);
@override
RichTextBuilder textWidthBasis(TextWidthBasis? textWidthBasis) =>
this(textWidthBasis: textWidthBasis);
@override
RichTextBuilder selectionColor(Color? selectionColor) =>
this(selectionColor: selectionColor);
@override
RichTextBuilder key(Key? key) => this(key: key);
@override
RichTextBuilder call({
@@ -27,6 +55,17 @@ class $RichTextBuilderCWProxyImpl implements $RichTextBuilderComponentCWProxy {
RichTextParser? parser,
TextStyle? defaultStyle,
Map<String, TextStyle>? styles,
StrutStyle? strutStyle,
TextAlign? textAlign,
TextDirection? textDirection,
Locale? locale,
bool? softWrap,
TextOverflow? overflow,
double? textScaleFactor,
int? maxLines,
String? semanticsLabel,
TextWidthBasis? textWidthBasis,
Color? selectionColor,
Key? key,
}) =>
RichTextBuilder(
@@ -34,6 +73,17 @@ class $RichTextBuilderCWProxyImpl implements $RichTextBuilderComponentCWProxy {
parser: parser ?? _value.parser,
defaultStyle: defaultStyle ?? _value.defaultStyle,
styles: styles ?? _value.styles,
strutStyle: strutStyle ?? _value.strutStyle,
textAlign: textAlign ?? _value.textAlign,
textDirection: textDirection ?? _value.textDirection,
locale: locale ?? _value.locale,
softWrap: softWrap ?? _value.softWrap,
overflow: overflow ?? _value.overflow,
textScaleFactor: textScaleFactor ?? _value.textScaleFactor,
maxLines: maxLines ?? _value.maxLines,
semanticsLabel: semanticsLabel ?? _value.semanticsLabel,
textWidthBasis: textWidthBasis ?? _value.textWidthBasis,
selectionColor: selectionColor ?? _value.selectionColor,
key: key ?? _value.key,
);
}
@@ -77,7 +77,7 @@ class CardThemeExtensionImpl extends CardThemeExtension {
radius: const BorderRadius.all(Radius.circular(12)),
padding: const EdgeInsets.all(25),
stroke: 1,
backgroundColors: WyattColors.grayBgOpacityGradient,
backgroundColors: MultiColor.single(WyattColors.light.withOpacity(0.04)),
borderColors: WyattColors.grayGradient,
titleStyle: theme.textTheme.titleLarge?.copyWith(
fontSize: 26,
@@ -17,6 +17,7 @@
import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
import 'package:wyatt_ui_kit/src/components/gradients/gradient_text_style.dart';
import 'package:wyatt_ui_kit/src/core/design_system/colors.dart';
class RichTextBuilderThemeExtensionImpl extends RichTextBuilderThemeExtension {
const RichTextBuilderThemeExtensionImpl({
@@ -52,54 +53,131 @@ class RichTextBuilderThemeExtensionImpl extends RichTextBuilderThemeExtension {
fontWeight: FontWeight.w600,
height: 1.8,
),
const MultiColor([
Color(0xFF3C97FB),
Color(0xFF436EF4),
]),
WyattColors.blueGradient,
),
'gradient-dark-blue': GradientTextStyle.from(
theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
height: 1.8,
),
WyattColors.darkBlueGradient,
),
'gradient-gray': GradientTextStyle.from(
theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
height: 1.8,
),
WyattColors.grayGradient,
),
'gradient-light-gray': GradientTextStyle.from(
theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
height: 1.8,
),
WyattColors.lightGrayGradient,
),
'gradient-light': GradientTextStyle.from(
theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
height: 1.8,
),
WyattColors.lightGradient,
),
'gradient-purple': GradientTextStyle.from(
theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
height: 1.8,
),
WyattColors.purpleGradient,
),
'gradient-red': GradientTextStyle.from(
theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
height: 1.8,
),
const MultiColor([
Color(0xFFF44464),
Color(0xFFF44464),
]),
WyattColors.redGradient,
),
'gradient-yellow': GradientTextStyle.from(
theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
height: 1.8,
),
WyattColors.yellowGradient,
),
'gradient-green': GradientTextStyle.from(
theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
height: 1.8,
),
const MultiColor([
Color(0xFF00D16C),
Color(0xFF00D16C),
]),
WyattColors.greenGradient,
),
'blue': theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: const Color(0xFF3C97FB),
color: WyattColors.blue1,
height: 1.8,
) ??
const TextStyle(
color: Color(0xFF3C97FB),
color: WyattColors.blue1,
),
'red': theme.textTheme.bodyMedium?.copyWith(
'dark-blue': theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: const Color(0xFFF44464),
color: WyattColors.darkBlue1,
height: 1.8,
) ??
const TextStyle(
color: Color(0xFFF44464),
color: WyattColors.darkBlue1,
),
'gray': theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: WyattColors.gray1,
height: 1.8,
) ??
const TextStyle(
color: WyattColors.gray1,
),
'green': theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: const Color(0xFF00D16C),
color: WyattColors.green1,
height: 1.8,
) ??
const TextStyle(
color: Color(0xFF00D16C),
color: WyattColors.green1,
),
'light': theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: WyattColors.light,
height: 1.8,
) ??
const TextStyle(
color: WyattColors.light,
),
'light-gray': theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: WyattColors.lightGray1,
height: 1.8,
) ??
const TextStyle(
color: WyattColors.lightGray1,
),
'purple': theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: WyattColors.purple1,
height: 1.8,
) ??
const TextStyle(
color: WyattColors.purple1,
),
'red': theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: WyattColors.red1,
height: 1.8,
) ??
const TextStyle(color: WyattColors.red1),
'yellow': theme.textTheme.bodyMedium?.copyWith(
fontWeight: FontWeight.w600,
color: WyattColors.yellow1,
height: 1.8,
) ??
const TextStyle(color: WyattColors.yellow1),
};
}
@@ -35,7 +35,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
normalStyle: TextInputStyle(
radius: BorderRadius.circular(12),
borderColors: const Color.fromRGBO(221, 224, 227, 1),
labelStyle: theme.textTheme.labelLarge?.copyWith(
labelStyle: theme.textTheme.labelMedium?.copyWith(
color: const Color.fromRGBO(55, 65, 81, 1),
),
inputStyle: theme.textTheme.bodyMedium?.copyWith(
@@ -45,7 +45,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
focusedStyle: TextInputStyle(
radius: BorderRadius.circular(12),
borderColors: const Color.fromRGBO(60, 125, 251, 1),
labelStyle: theme.textTheme.labelLarge?.copyWith(
labelStyle: theme.textTheme.labelMedium?.copyWith(
color: const Color.fromRGBO(55, 65, 81, 1),
),
inputStyle: theme.textTheme.bodyMedium?.copyWith(
@@ -55,7 +55,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
invalidStyle: TextInputStyle(
radius: BorderRadius.circular(12),
borderColors: const Color.fromRGBO(244, 68, 100, 1),
labelStyle: theme.textTheme.labelLarge?.copyWith(
labelStyle: theme.textTheme.labelMedium?.copyWith(
color: const Color.fromRGBO(244, 68, 100, 1),
),
inputStyle: theme.textTheme.bodyMedium?.copyWith(
@@ -65,7 +65,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
disabledStyle: TextInputStyle(
radius: BorderRadius.circular(12),
borderColors: const Color.fromRGBO(229, 231, 235, 1),
labelStyle: theme.textTheme.labelLarge?.copyWith(
labelStyle: theme.textTheme.labelMedium?.copyWith(
color: const Color.fromRGBO(156, 163, 175, 1),
),
inputStyle: theme.textTheme.bodyMedium?.copyWith(
@@ -81,7 +81,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
normalStyle: TextInputStyle(
radius: BorderRadius.circular(12),
borderColors: const Color.fromRGBO(96, 101, 106, 1),
labelStyle: theme.textTheme.labelLarge?.copyWith(
labelStyle: theme.textTheme.labelMedium?.copyWith(
color: const Color.fromRGBO(204, 204, 204, 1),
),
inputStyle: theme.textTheme.bodyMedium?.copyWith(
@@ -91,7 +91,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
focusedStyle: TextInputStyle(
radius: BorderRadius.circular(12),
borderColors: const Color.fromRGBO(60, 125, 251, 1),
labelStyle: theme.textTheme.labelLarge?.copyWith(
labelStyle: theme.textTheme.labelMedium?.copyWith(
color: const Color.fromRGBO(204, 204, 204, 1),
),
inputStyle: theme.textTheme.bodyMedium?.copyWith(
@@ -101,7 +101,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
invalidStyle: TextInputStyle(
radius: BorderRadius.circular(12),
borderColors: const Color.fromRGBO(244, 68, 100, 1),
labelStyle: theme.textTheme.labelLarge?.copyWith(
labelStyle: theme.textTheme.labelMedium?.copyWith(
color: const Color.fromRGBO(244, 68, 100, 1),
),
inputStyle: theme.textTheme.bodyMedium?.copyWith(
@@ -111,7 +111,7 @@ class TextInputThemeExtensionImpl extends TextInputThemeExtension {
disabledStyle: TextInputStyle(
radius: BorderRadius.circular(12),
borderColors: const Color.fromRGBO(96, 101, 106, 1),
labelStyle: theme.textTheme.labelLarge?.copyWith(
labelStyle: theme.textTheme.labelMedium?.copyWith(
color: const Color.fromRGBO(96, 101, 106, 1),
),
inputStyle: theme.textTheme.bodyMedium?.copyWith(
@@ -39,5 +39,6 @@ abstract class WyattComponentThemeData {
portfolioCard: PortfolioCard(),
quoteCard: QuoteCard(),
skillCard: SkillCard(),
pricingCard: PricingCard(),
);
}
+2 -2
View File
@@ -1,7 +1,7 @@
name: wyatt_ui_kit
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
version: 3.0.0
version: 3.1.0
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
@@ -25,7 +25,7 @@ dependencies:
version: ^2.0.1
wyatt_ui_components:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.2.0
version: ^0.2.2
dev_dependencies:
build_runner: ^2.3.3
+8
View File
@@ -1,3 +1,11 @@
## 0.1.1
- **FEAT**(ui_layout-bloc_layout): proxy scaffold fields.
## 0.1.0+1
- Update a dependency to the latest release.
## 0.1.0
> Note: This release has breaking changes.
@@ -36,7 +36,7 @@ dependencies:
wyatt_ui_components:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.2.0
version: ^0.2.2
wyatt_component_copy_with_extension:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
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;
}
@@ -14,8 +14,10 @@
// 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';
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';
/// {@template bottom_navigation_bar_layout}
@@ -27,6 +29,7 @@ class BottomNavigationBarLayout extends StructuralLayout {
const BottomNavigationBarLayout({
required this.body,
this.custom,
this.scaffoldFieldsWrapper,
super.key,
});
@@ -38,6 +41,8 @@ class BottomNavigationBarLayout extends StructuralLayout {
final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
custom;
final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
@override
Widget build(BuildContext context) => Scaffold(
body: body,
@@ -45,5 +50,35 @@ class BottomNavigationBarLayout extends StructuralLayout {
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,
);
}
@@ -14,8 +14,10 @@
// 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';
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';
/// {@template frame_layout}
@@ -33,7 +35,9 @@ class FrameLayout extends StructuralLayout {
required this.body,
this.customAppBar,
this.customBottomNavBar,
this.customFloatingActionButton,
this.height = 60,
this.scaffoldFieldsWrapper,
super.key,
});
@@ -44,12 +48,19 @@ class FrameLayout extends StructuralLayout {
final BottomNavigationBarComponent? Function(BottomNavigationBarComponent?)?
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.
final Widget body;
/// The height of the top app bar.
final double height;
final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
@override
Widget build(BuildContext context) => Scaffold(
appBar: (customAppBar?.call(context.components.topAppBar) != null ||
@@ -60,9 +71,42 @@ class FrameLayout extends StructuralLayout {
context.components.topAppBar!,
)
: null,
body: body,
floatingActionButton: customFloatingActionButton
?.call(context.components.floatingActionButton) ??
context.components.floatingActionButton,
bottomNavigationBar:
customBottomNavBar?.call(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,
);
}
@@ -14,8 +14,10 @@
// 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';
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';
/// {@template top_bar_layout}
@@ -37,6 +39,7 @@ abstract class TopBarLayout<T extends TopBarComponent>
required this.body,
this.custom,
this.height = 60,
this.scaffoldFieldsWrapper,
super.key,
});
@@ -54,6 +57,8 @@ abstract class TopBarLayout<T extends TopBarComponent>
/// Returns the top bar component for the given [BuildContext].
T? child(BuildContext context);
final ScaffoldFieldsWrapper? scaffoldFieldsWrapper;
@override
Widget build(BuildContext context) => Scaffold(
appBar: (custom?.call(child(context)) != null || child(context) != null)
@@ -63,6 +68,36 @@ abstract class TopBarLayout<T extends TopBarComponent>
)
: null,
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,
);
}
+2 -1
View File
@@ -14,4 +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 'presentation/presentation.dart';
export './core/core.dart';
export './presentation/presentation.dart';
+2 -2
View File
@@ -1,7 +1,7 @@
name: wyatt_ui_layout
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
version: 0.1.0
version: 0.1.1
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
@@ -14,7 +14,7 @@ dependencies:
wyatt_ui_components:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^0.2.0
version: ^0.2.2
dev_dependencies:
flutter_test: { sdk: flutter }