Skip to content

Commit bfb9ce2

Browse files
committed
fix nickname field resetting while typing
1 parent ebe66ce commit bfb9ce2

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

lib/features/settings/settings_page.dart

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,28 @@ class SettingsPage extends StatefulWidget {
1616

1717
class _SettingsPageState extends State<SettingsPage> {
1818
late final TextEditingController _nicknameController;
19+
late String _lastSyncedNickname;
1920
bool _savingNickname = false;
2021

2122
@override
2223
void initState() {
2324
super.initState();
25+
_lastSyncedNickname = widget.controller.preferences.nickname;
2426
_nicknameController = TextEditingController(
25-
text: widget.controller.preferences.nickname,
27+
text: _lastSyncedNickname,
2628
);
2729
}
2830

2931
@override
3032
void didUpdateWidget(covariant SettingsPage oldWidget) {
3133
super.didUpdateWidget(oldWidget);
32-
if (_nicknameController.text != widget.controller.preferences.nickname) {
33-
_nicknameController.text = widget.controller.preferences.nickname;
34+
final savedNickname = widget.controller.preferences.nickname;
35+
if (savedNickname != _lastSyncedNickname) {
36+
_lastSyncedNickname = savedNickname;
37+
_nicknameController.value = TextEditingValue(
38+
text: savedNickname,
39+
selection: TextSelection.collapsed(offset: savedNickname.length),
40+
);
3441
}
3542
}
3643

@@ -282,6 +289,7 @@ class _SettingsPageState extends State<SettingsPage> {
282289
if (!mounted) {
283290
return;
284291
}
292+
_lastSyncedNickname = widget.controller.preferences.nickname;
285293
setState(() {
286294
_savingNickname = false;
287295
});

0 commit comments

Comments
 (0)