From 2f8491f107ca860c2d0cc5477d37c45981f5c390 Mon Sep 17 00:00:00 2001 From: mike doornenbal Date: Fri, 6 Oct 2023 10:33:02 +0200 Subject: [PATCH] feat: add custom background color for avatar --- CHANGELOG.md | 26 ++++++---- example/pubspec.lock | 54 ++++++++++---------- lib/src/widgets/avatar/avatar.dart | 9 ++-- lib/src/widgets/avatar/avatar_wrapper.dart | 3 ++ lib/src/widgets/profile/profile_page.dart | 5 ++ lib/src/widgets/profile/profile_wrapper.dart | 3 ++ pubspec.yaml | 2 +- 7 files changed, 60 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cb2511..4592a69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,43 +1,47 @@ +## 1.1.5 + +- Added custom background color for avatar + ## 1.0.5 -* Added TextStyle option for all text fields +- Added TextStyle option for all text fields ## 1.0.4 -* Fixed a nullcheck being done on the nullable user in Avatar +- Fixed a nullcheck being done on the nullable user in Avatar ## 1.0.3 -* No longer crashes without profile data +- No longer crashes without profile data ## 1.0.2 -* Added form key and more customizability for web +- Added form key and more customizability for web ## 1.0.1 -* Added a default wrap instead of column +- Added a default wrap instead of column ## 0.0.11 -* Fixed bug where some field wouldn't update when submitted. +- Fixed bug where some field wouldn't update when submitted. ## 0.0.10 -* Fixed bug where keyboard would close on selecting custom input fields. +- Fixed bug where keyboard would close on selecting custom input fields. ## 0.0.7 -* Submit all edited fields on submit of one field +- Submit all edited fields on submit of one field ## 0.0.3 -* Add support for image URL (instead of in-memory image using image parameter from User model) +- Add support for image URL (instead of in-memory image using image parameter from User model) ## 0.0.2 -* Add prioritizedItems option to display items at the top of the page. +- Add prioritizedItems option to display items at the top of the page. ## 0.0.1 -* Initial release. \ No newline at end of file +- Initial release. diff --git a/example/pubspec.lock b/example/pubspec.lock index 6fcd9fd..e737ecf 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -45,10 +45,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: @@ -61,10 +61,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.17.2" crypto: dependency: transitive description: @@ -162,14 +162,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.2" - js: - dependency: transitive - description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" - source: hosted - version: "0.6.5" lints: dependency: transitive description: @@ -182,26 +174,26 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" octo_image: dependency: transitive description: @@ -214,10 +206,10 @@ packages: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" path_provider: dependency: transitive description: @@ -323,10 +315,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" sqflite: dependency: transitive description: @@ -387,10 +379,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.0" typed_data: dependency: transitive description: @@ -415,6 +407,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" win32: dependency: transitive description: @@ -432,5 +432,5 @@ packages: source: hosted version: "0.2.0+2" sdks: - dart: ">=2.18.0 <3.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=3.3.0" diff --git a/lib/src/widgets/avatar/avatar.dart b/lib/src/widgets/avatar/avatar.dart index a3a7a5c..6b7be6b 100644 --- a/lib/src/widgets/avatar/avatar.dart +++ b/lib/src/widgets/avatar/avatar.dart @@ -11,10 +11,12 @@ class Avatar extends StatelessWidget { Key? key, this.user, this.size = 100, + this.avatarBackgroundColor, }) : super(key: key); final User? user; final double size; + final Color? avatarBackgroundColor; @override Widget build(BuildContext context) { @@ -28,9 +30,10 @@ class Avatar extends StatelessWidget { height: size, decoration: BoxDecoration( shape: BoxShape.circle, - color: !hasImage && hasNames - ? _generateColorWithIntials(user!.firstName, user!.lastName) - : null, + color: avatarBackgroundColor ?? + (!hasImage && hasNames + ? _generateColorWithIntials(user!.firstName, user!.lastName) + : null), image: hasImage ? DecorationImage( image: imageProvider, diff --git a/lib/src/widgets/avatar/avatar_wrapper.dart b/lib/src/widgets/avatar/avatar_wrapper.dart index a411aa0..7e45503 100644 --- a/lib/src/widgets/avatar/avatar_wrapper.dart +++ b/lib/src/widgets/avatar/avatar_wrapper.dart @@ -15,10 +15,12 @@ class AvatarWrapper extends StatelessWidget { this.size = 100, this.textStyle, this.customAvatar, + this.avatarBackgroundColor, }) : super(key: key); final User user; final Widget? customAvatar; + final Color? avatarBackgroundColor; final bool showName; final EdgeInsets padding; final TextStyle? textStyle; @@ -30,6 +32,7 @@ class AvatarWrapper extends StatelessWidget { Avatar( user: user, size: size, + avatarBackgroundColor: avatarBackgroundColor, ); return showName diff --git a/lib/src/widgets/profile/profile_page.dart b/lib/src/widgets/profile/profile_page.dart index 42e6b9b..9dda43f 100644 --- a/lib/src/widgets/profile/profile_page.dart +++ b/lib/src/widgets/profile/profile_page.dart @@ -35,6 +35,7 @@ class ProfilePage extends StatefulWidget { this.style = const ProfileStyle(), this.customAvatar, this.showAvatar = true, + this.avatarBackgroundColor, this.showItems = true, this.itemBuilder, this.itemBuilderOptions, @@ -62,6 +63,9 @@ class ProfilePage extends StatefulWidget { /// Whether to show the users avatar. final bool showAvatar; + ///The background color of the avatar when no image is available. + final Color? avatarBackgroundColor; + /// Whether you want to show the input fields, sometimes you just want to edit the avatar. final bool showItems; @@ -118,6 +122,7 @@ class _ProfilePageState extends State { wrapViewOptions: widget.wrapViewOptions, extraWidgets: widget.extraWidgets, formKey: widget.formKey, + avatarBackgroundColor: widget.avatarBackgroundColor, ); } } diff --git a/lib/src/widgets/profile/profile_wrapper.dart b/lib/src/widgets/profile/profile_wrapper.dart index 023884b..869765c 100644 --- a/lib/src/widgets/profile/profile_wrapper.dart +++ b/lib/src/widgets/profile/profile_wrapper.dart @@ -20,6 +20,7 @@ class ProfileWrapper extends StatefulWidget { this.style = const ProfileStyle(), this.customAvatar, this.showAvatar = true, + this.avatarBackgroundColor, this.itemBuilder, this.itemBuilderOptions, this.wrapViewOptions, @@ -38,6 +39,7 @@ class ProfileWrapper extends StatefulWidget { final ProfileStyle style; final Widget? customAvatar; final bool showAvatar; + final Color? avatarBackgroundColor; final String? bottomActionText; final ItemBuilder? itemBuilder; final WrapViewOptions? wrapViewOptions; @@ -206,6 +208,7 @@ class _ProfileWrapperState extends State { ), ), child: AvatarWrapper( + avatarBackgroundColor: widget.avatarBackgroundColor, user: widget.user, textStyle: widget.style.avatarTextStyle, customAvatar: _isUploadingImage diff --git a/pubspec.yaml b/pubspec.yaml index d7dcb50..bd29ce5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_profile description: Flutter profile package -version: 1.0.5 +version: 1.1.5 repository: https://github.com/Iconica-Development/flutter_profile environment: