diff --git a/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart b/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart index a8d92577..b91ce056 100644 --- a/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart +++ b/lib/screens/home_page/editor_pane/details_card/request_pane/request_headers.dart @@ -1,3 +1,4 @@ +import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:davi/davi.dart'; @@ -14,17 +15,20 @@ class EditRequestHeaders extends ConsumerStatefulWidget { class EditRequestHeadersState extends ConsumerState { late List rows; + final random = Random.secure(); + late int seed; @override void initState() { super.initState(); + seed = random.nextInt(randRange); } Widget _buildHeaderField(BuildContext context, DaviRow row) { String? activeId = ref.read(activeIdStateProvider); int idx = row.index; return TextFormField( - key: Key("$activeId-$idx-headers-k"), + key: Key("$activeId-$idx-headers-k-$seed"), initialValue: rows[idx].k, style: codeStyle, decoration: InputDecoration( @@ -41,7 +45,7 @@ class EditRequestHeadersState extends ConsumerState { String? activeId = ref.read(activeIdStateProvider); int idx = row.index; return TextFormField( - key: Key("$activeId-$idx-headers-v"), + key: Key("$activeId-$idx-headers-v-$seed"), initialValue: rows[idx].v, style: codeStyle, decoration: InputDecoration( @@ -82,8 +86,13 @@ class EditRequestHeadersState extends ConsumerState { ); final activeId = ref.watch(activeIdStateProvider); - final collection = ref.watch(collectionStateNotifierProvider); + /*final collection = ref.watch(collectionStateNotifierProvider); final idIdx = collection.indexWhere((m) => m.id == activeId); + rows = collection[idIdx].requestHeaders ?? [const KVRow("", "")];*/ + final collection = ref.read(collectionStateNotifierProvider); + final idIdx = collection.indexWhere((m) => m.id == activeId); + final length = ref.watch(collectionStateNotifierProvider + .select((value) => value[idIdx].requestHeaders?.length)); rows = collection[idIdx].requestHeaders ?? [const KVRow("", "")]; DaviModel model = DaviModel( rows: rows, @@ -112,6 +121,7 @@ class EditRequestHeadersState extends ConsumerState { ), onTap: () { rows.removeAt(row.index); + seed = random.nextInt(randRange); _onFieldChange(activeId!); }, ); diff --git a/lib/screens/home_page/editor_pane/details_card/request_pane/request_params.dart b/lib/screens/home_page/editor_pane/details_card/request_pane/request_params.dart index c1575a81..9415379f 100644 --- a/lib/screens/home_page/editor_pane/details_card/request_pane/request_params.dart +++ b/lib/screens/home_page/editor_pane/details_card/request_pane/request_params.dart @@ -1,3 +1,4 @@ +import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:davi/davi.dart'; @@ -15,17 +16,20 @@ class EditRequestURLParams extends ConsumerStatefulWidget { class EditRequestURLParamsState extends ConsumerState { late List rows; + final random = Random.secure(); + late int seed; @override void initState() { super.initState(); + seed = random.nextInt(randRange); } Widget _buildParamField(BuildContext context, DaviRow row) { String? activeId = ref.read(activeIdStateProvider); int idx = row.index; return TextFormField( - key: Key("$activeId-$idx-params-k"), + key: Key("$activeId-$idx-params-k-$seed"), initialValue: rows[idx].k, style: codeStyle, decoration: InputDecoration( @@ -42,7 +46,7 @@ class EditRequestURLParamsState extends ConsumerState { String? activeId = ref.read(activeIdStateProvider); int idx = row.index; return TextFormField( - key: Key("$activeId-$idx-params-v"), + key: Key("$activeId-$idx-params-v-$seed"), initialValue: rows[idx].v, style: codeStyle, decoration: InputDecoration( @@ -83,8 +87,10 @@ class EditRequestURLParamsState extends ConsumerState { ); final activeId = ref.watch(activeIdStateProvider); - final collection = ref.watch(collectionStateNotifierProvider); + final collection = ref.read(collectionStateNotifierProvider); final idIdx = collection.indexWhere((m) => m.id == activeId); + final length = ref.watch(collectionStateNotifierProvider + .select((value) => value[idIdx].requestParams?.length)); rows = collection[idIdx].requestParams ?? [const KVRow("", "")]; DaviModel model = DaviModel( rows: rows, @@ -113,6 +119,7 @@ class EditRequestURLParamsState extends ConsumerState { ), onTap: () { rows.removeAt(row.index); + seed = random.nextInt(randRange); _onFieldChange(activeId!); }, );