Skip to content

Commit bd58dda

Browse files
Merge pull request #1397 from ArturAssisComp/main
fix: #1396 fix dynamic fields example widget issues
2 parents 8c50002 + 3806f84 commit bd58dda

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

example/lib/sources/dynamic_fields.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ import 'package:flutter/material.dart';
22
import 'package:flutter_form_builder/flutter_form_builder.dart';
33
import 'package:form_builder_validators/form_builder_validators.dart';
44

5+
/// ## Caveats
6+
/// There is a limitation of 2^53 - 1 (approximately 10^15) on the number of new
7+
/// fields that can be added to this widget. For the purposes of the widget, it
8+
/// is more than sufficient.
59
class DynamicFields extends StatefulWidget {
610
const DynamicFields({Key? key}) : super(key: key);
711

@@ -12,6 +16,7 @@ class DynamicFields extends StatefulWidget {
1216
class _DynamicFieldsState extends State<DynamicFields> {
1317
final _formKey = GlobalKey<FormBuilderState>();
1418
final List<Widget> fields = [];
19+
var _newTextFieldId = 0;
1520
String savedValue = '';
1621

1722
@override
@@ -65,12 +70,15 @@ class _DynamicFieldsState extends State<DynamicFields> {
6570
style: TextStyle(color: Colors.white),
6671
),
6772
onPressed: () {
73+
final newTextFieldName = 'name_${_newTextFieldId++}';
74+
final newTextFieldKey = ValueKey(_newTextFieldId);
6875
setState(() {
6976
fields.add(NewTextField(
70-
name: 'name_${fields.length}',
77+
key: newTextFieldKey,
78+
name: newTextFieldName,
7179
onDelete: () {
7280
setState(() {
73-
fields.removeAt(fields.length - 1);
81+
fields.removeWhere((e) => e.key == newTextFieldKey);
7482
});
7583
},
7684
));

0 commit comments

Comments
 (0)