Compare commits

..

2 commits

Author SHA1 Message Date
d8087d5a85 chore: set version to 1.5.1 2025-04-03 16:08:41 +02:00
1c858c0108 fix: type an untyped function variable 2025-04-03 16:07:32 +02:00
8 changed files with 48 additions and 43 deletions

4
.gitignore vendored
View file

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

View file

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

View file

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

View file

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

View file

@ -21,8 +21,8 @@ class ItemBuilder {
String key, String key,
String? value, String? value,
Widget? widget, Widget? widget,
void Function(String) updateItem, Function(String) updateItem,
void Function(String?) saveItem, Function(String?) saveItem,
) { ) {
if (widget == null) { if (widget == null) {
var controller = TextEditingController( var controller = TextEditingController(
@ -55,7 +55,7 @@ class ItemBuilder {
Widget buildPassword( Widget buildPassword(
String key, String key,
TextEditingController controller, TextEditingController controller,
void Function(String?) onChanged, Function(String?) onChanged,
String? Function(String?) validator, String? Function(String?) validator,
) { ) {
var inputDecoration = var inputDecoration =

View file

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

View file

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

View file

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