fix: avatar image zooming

This commit is contained in:
mike doornenbal 2023-10-06 11:37:13 +02:00
commit f56e59b8c4
7 changed files with 64 additions and 42 deletions

View file

@ -1,43 +1,51 @@
## 1.1.6
- Fixed avatar image zooming when constrained beyond it's size
## 1.1.5
- Added custom background color for avatar
## 1.0.5 ## 1.0.5
* Added TextStyle option for all text fields - Added TextStyle option for all text fields
## 1.0.4 ## 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 ## 1.0.3
* No longer crashes without profile data - No longer crashes without profile data
## 1.0.2 ## 1.0.2
* Added form key and more customizability for web - Added form key and more customizability for web
## 1.0.1 ## 1.0.1
* Added a default wrap instead of column - Added a default wrap instead of column
## 0.0.11 ## 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 ## 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 ## 0.0.7
* Submit all edited fields on submit of one field - Submit all edited fields on submit of one field
## 0.0.3 ## 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 ## 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 ## 0.0.1
* Initial release. - Initial release.

View file

@ -5,10 +5,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: async name: async
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.10.0" version: "2.11.0"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
@ -45,10 +45,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: characters name: characters
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.1" version: "1.3.0"
clock: clock:
dependency: transitive dependency: transitive
description: description:
@ -61,10 +61,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: collection name: collection
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.17.0" version: "1.17.2"
crypto: crypto:
dependency: transitive dependency: transitive
description: description:
@ -162,14 +162,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.2" version: "4.0.2"
js:
dependency: transitive
description:
name: js
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
url: "https://pub.dev"
source: hosted
version: "0.6.5"
lints: lints:
dependency: transitive dependency: transitive
description: description:
@ -182,26 +174,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: matcher name: matcher
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.12.13" version: "0.12.16"
material_color_utilities: material_color_utilities:
dependency: transitive dependency: transitive
description: description:
name: material_color_utilities name: material_color_utilities
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.2.0" version: "0.5.0"
meta: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.8.0" version: "1.9.1"
octo_image: octo_image:
dependency: transitive dependency: transitive
description: description:
@ -214,10 +206,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: path name: path
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.8.2" version: "1.8.3"
path_provider: path_provider:
dependency: transitive dependency: transitive
description: description:
@ -323,10 +315,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: source_span name: source_span
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.9.1" version: "1.10.0"
sqflite: sqflite:
dependency: transitive dependency: transitive
description: description:
@ -387,10 +379,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.4.16" version: "0.6.0"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
@ -415,6 +407,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.4" version: "2.1.4"
web:
dependency: transitive
description:
name: web
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
url: "https://pub.dev"
source: hosted
version: "0.1.4-beta"
win32: win32:
dependency: transitive dependency: transitive
description: description:
@ -432,5 +432,5 @@ packages:
source: hosted source: hosted
version: "0.2.0+2" version: "0.2.0+2"
sdks: sdks:
dart: ">=2.18.0 <3.0.0" dart: ">=3.1.0-185.0.dev <4.0.0"
flutter: ">=3.3.0" flutter: ">=3.3.0"

View file

@ -11,10 +11,12 @@ class Avatar extends StatelessWidget {
Key? key, Key? key,
this.user, this.user,
this.size = 100, this.size = 100,
this.avatarBackgroundColor,
}) : super(key: key); }) : super(key: key);
final User? user; final User? user;
final double size; final double size;
final Color? avatarBackgroundColor;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -28,9 +30,10 @@ class Avatar extends StatelessWidget {
height: size, height: size,
decoration: BoxDecoration( decoration: BoxDecoration(
shape: BoxShape.circle, shape: BoxShape.circle,
color: !hasImage && hasNames color: avatarBackgroundColor ??
? _generateColorWithIntials(user!.firstName, user!.lastName) (!hasImage && hasNames
: null, ? _generateColorWithIntials(user!.firstName, user!.lastName)
: null),
image: hasImage image: hasImage
? DecorationImage( ? DecorationImage(
image: imageProvider, image: imageProvider,

View file

@ -15,10 +15,12 @@ class AvatarWrapper extends StatelessWidget {
this.size = 100, this.size = 100,
this.textStyle, this.textStyle,
this.customAvatar, this.customAvatar,
this.avatarBackgroundColor,
}) : super(key: key); }) : super(key: key);
final User user; final User user;
final Widget? customAvatar; final Widget? customAvatar;
final Color? avatarBackgroundColor;
final bool showName; final bool showName;
final EdgeInsets padding; final EdgeInsets padding;
final TextStyle? textStyle; final TextStyle? textStyle;
@ -30,6 +32,7 @@ class AvatarWrapper extends StatelessWidget {
Avatar( Avatar(
user: user, user: user,
size: size, size: size,
avatarBackgroundColor: avatarBackgroundColor,
); );
return showName return showName

View file

@ -35,6 +35,7 @@ class ProfilePage extends StatefulWidget {
this.style = const ProfileStyle(), this.style = const ProfileStyle(),
this.customAvatar, this.customAvatar,
this.showAvatar = true, this.showAvatar = true,
this.avatarBackgroundColor,
this.showItems = true, this.showItems = true,
this.itemBuilder, this.itemBuilder,
this.itemBuilderOptions, this.itemBuilderOptions,
@ -62,6 +63,9 @@ class ProfilePage extends StatefulWidget {
/// Whether to show the users avatar. /// Whether to show the users avatar.
final bool showAvatar; 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. /// Whether you want to show the input fields, sometimes you just want to edit the avatar.
final bool showItems; final bool showItems;
@ -118,6 +122,7 @@ class _ProfilePageState extends State<ProfilePage> {
wrapViewOptions: widget.wrapViewOptions, wrapViewOptions: widget.wrapViewOptions,
extraWidgets: widget.extraWidgets, extraWidgets: widget.extraWidgets,
formKey: widget.formKey, formKey: widget.formKey,
avatarBackgroundColor: widget.avatarBackgroundColor,
); );
} }
} }

View file

@ -20,6 +20,7 @@ class ProfileWrapper extends StatefulWidget {
this.style = const ProfileStyle(), this.style = const ProfileStyle(),
this.customAvatar, this.customAvatar,
this.showAvatar = true, this.showAvatar = true,
this.avatarBackgroundColor,
this.itemBuilder, this.itemBuilder,
this.itemBuilderOptions, this.itemBuilderOptions,
this.wrapViewOptions, this.wrapViewOptions,
@ -38,6 +39,7 @@ class ProfileWrapper extends StatefulWidget {
final ProfileStyle style; final ProfileStyle style;
final Widget? customAvatar; final Widget? customAvatar;
final bool showAvatar; final bool showAvatar;
final Color? avatarBackgroundColor;
final String? bottomActionText; final String? bottomActionText;
final ItemBuilder? itemBuilder; final ItemBuilder? itemBuilder;
final WrapViewOptions? wrapViewOptions; final WrapViewOptions? wrapViewOptions;
@ -206,6 +208,7 @@ class _ProfileWrapperState extends State<ProfileWrapper> {
), ),
), ),
child: AvatarWrapper( child: AvatarWrapper(
avatarBackgroundColor: widget.avatarBackgroundColor,
user: widget.user, user: widget.user,
textStyle: widget.style.avatarTextStyle, textStyle: widget.style.avatarTextStyle,
customAvatar: _isUploadingImage customAvatar: _isUploadingImage

View file

@ -1,6 +1,6 @@
name: flutter_profile name: flutter_profile
description: Flutter profile package description: Flutter profile package
version: 1.0.5 version: 1.1.6
repository: https://github.com/Iconica-Development/flutter_profile repository: https://github.com/Iconica-Development/flutter_profile
environment: environment: