Compare commits

..

8 commits

Author SHA1 Message Date
eda3a928cd fix: only accept nullable strings when building items for an itemlist
The value is put directly in a TextEditingController so it needs to be a string,
any other value has to be parsed to a string by the user first.
2025-04-04 15:56:16 +02:00
Gorter-dev
3c95ad2c3f
Merge pull request #38 from Iconica-Development/fix/untyped-variable
fix: type an untyped function variable
2025-04-03 16:02:41 +02:00
8d3be0083a fix: type an untyped function variable 2025-04-03 15:57:05 +02:00
Gorter-dev
91735f40cd
Merge pull request #36 from Iconica-Development/bugfix/input_library
fix: input_library version
2024-08-08 10:25:46 +02:00
mike doornenbal
2e0fcb50c0 fix: input_library version 2024-08-07 16:59:57 +02:00
Gorter-dev
9374ea9694
Merge pull request #35 from Iconica-Development/chore/deploy
chore: ready the package for deployment to the pub server
2024-07-22 14:56:58 +02:00
Bart Ribbers
d6ab8e4218 chore: ready the package for deployment to the pub server 2024-07-19 11:46:38 +02:00
Bart Ribbers
6393eda1c1 chore: add fvm configuration to gitignore 2024-07-19 11:46:07 +02:00
8 changed files with 45 additions and 50 deletions

4
.gitignore vendored
View file

@ -38,3 +38,7 @@ example/web/
.flutter-plugins
.flutter-plugins-dependencies
.metadata
# FVM Version Cache
.fvm/
.fvmrc

View file

@ -1,3 +1,6 @@
## 1.6.0
* Upgraded flutter_input_library to 3.6.0
## 1.5.0
- Updated flutter_input_library to 3.2.1

View file

@ -17,7 +17,7 @@ class ExampleProfileData extends ProfileData {
String? remarks;
@override
Map<String, dynamic> mapWidget(
Map<String, Widget?> mapWidget(
VoidCallback update,
BuildContext context,
) {
@ -38,7 +38,7 @@ class ExampleProfileData extends ProfileData {
}
@override
Map<String, dynamic> toMap() {
Map<String, String?> toMap() {
return {'email': email, 'about': about, 'remarks': remarks};
}

View file

@ -76,9 +76,9 @@ abstract class ProfileData {
ProfileData fromMap(Map<String, dynamic> data);
Map<String, dynamic> toMap();
Map<String, String?> toMap();
Map<String, dynamic> mapWidget(VoidCallback update, BuildContext context);
Map<String, Widget?> mapWidget(VoidCallback update, BuildContext context);
ProfileData create();
}

View file

@ -19,14 +19,14 @@ class ItemBuilder {
Widget build(
String key,
value,
String? value,
Widget? widget,
Function(String) updateItem,
Function(String?) saveItem,
void Function(String) updateItem,
void Function(String?) saveItem,
) {
if (widget == null) {
var controller = TextEditingController(
text: '${value ?? ''}',
text: value ?? '',
);
var inputDecoration =
@ -55,7 +55,7 @@ class ItemBuilder {
Widget buildPassword(
String key,
TextEditingController controller,
Function(String?) onChanged,
void Function(String?) onChanged,
String? Function(String?) validator,
) {
var inputDecoration =

View file

@ -16,49 +16,39 @@ class ItemList {
this.itemBuilder,
this.itemBuilderOptions,
}) {
for (var item in items.entries) {
widgets.addAll({
item.key: itemBuilder == null
? builder.build(
item.key,
item.value,
typeMap[item.key],
(value) {
saveProfile();
},
(value) {
updateProfile(item.key, value);
},
)
: itemBuilder!.build(
item.key,
item.value,
typeMap[item.key],
(value) {
saveProfile();
},
(value) {
updateProfile(item.key, value);
},
),
});
}
var itemBuilder = this.itemBuilder ?? builder;
widgets = {
for (var item in items.entries) ...{
item.key: itemBuilder.build(
item.key,
item.value,
typeMap[item.key],
(value) {
saveProfile();
},
(value) {
updateProfile(item.key, value);
},
),
},
};
}
/// Gets the map of item keys and their corresponding widgets.
Map<String, Widget> getItemList() => widgets;
/// Map containing item keys and their values.
final Map<String, dynamic> items;
final Map<String, String?> items;
/// Map containing item keys and their types.
final Map<String, dynamic> typeMap;
final Map<String, Widget?> typeMap;
/// Function to update the profile with a specific item's value.
final Function(String, String?) updateProfile;
final void Function(String, String?) updateProfile;
/// Function to save the profile after an item value is updated.
final Function() saveProfile;
final void Function() saveProfile;
/// Builder for custom item widgets.
final ItemBuilder? itemBuilder;
@ -70,7 +60,7 @@ class ItemList {
final GlobalKey<FormState> formKey;
/// Map containing item keys and their corresponding widgets.
Map<String, Widget> widgets = {};
late final Map<String, Widget> widgets;
/// `builder` is an instance of `ItemBuilder` which is used
/// to build the items in the list.

View file

@ -1,21 +1,19 @@
name: flutter_profile
description: Flutter profile package
version: 1.5.0
version: 1.6.0
repository: https://github.com/Iconica-Development/flutter_profile
publish_to: none
publish_to: https://forgejo.internal.iconica.nl/api/packages/internal/pub
environment:
sdk: ^3.0.0
sdk: ">=3.0.0 <4.0.0"
flutter: ">=1.17.0"
dependencies:
cached_network_image: ^3.3.0
flutter_input_library:
git:
url: https://github.com/Iconica-Development/flutter_input_library
ref: 3.3.1
hosted: https://forgejo.internal.iconica.nl/api/packages/internal/pub
version: ^3.6.0
flutter:
sdk: flutter

View file

@ -13,7 +13,7 @@ class TestProfileData extends ProfileData {
String? email;
@override
Map<String, dynamic> mapWidget(
Map<String, Widget?> mapWidget(
VoidCallback update,
BuildContext context,
) =>
@ -27,7 +27,7 @@ class TestProfileData extends ProfileData {
);
@override
Map<String, dynamic> toMap() => {
Map<String, String?> toMap() => {
'email': email,
};