refactor: share controller disposal and Plex DTO parsing

This commit is contained in:
edde746
2026-05-02 09:43:08 +02:00
parent 7fc136f592
commit 244b291255
21 changed files with 511 additions and 407 deletions
+6 -5
View File
@@ -3,6 +3,7 @@ import 'package:flutter/services.dart';
import '../focus/focusable_button.dart';
import '../focus/input_mode_tracker.dart';
import '../i18n/strings.g.dart';
import '../mixins/controller_disposer_mixin.dart';
import '../widgets/app_icon.dart';
import '../widgets/dialog_action_button.dart';
import '../widgets/focusable_list_tile.dart';
@@ -212,7 +213,7 @@ Future<String?> showMultilineTextInputDialog(
/// Shared lifecycle for the two private text-input dialogs below: a single
/// [TextEditingController] seeded from [initialValue], plus a focus node for
/// the save button.
mixin _TextInputDialogStateMixin<T extends StatefulWidget> on State<T> {
mixin _TextInputDialogStateMixin<T extends StatefulWidget> on State<T>, ControllerDisposerMixin<T> {
late final TextEditingController _controller;
final _saveFocusNode = FocusNode();
@@ -221,12 +222,11 @@ mixin _TextInputDialogStateMixin<T extends StatefulWidget> on State<T> {
@override
void initState() {
super.initState();
_controller = TextEditingController(text: initialValue);
_controller = createTextEditingController(text: initialValue);
}
@override
void dispose() {
_controller.dispose();
_saveFocusNode.dispose();
super.dispose();
}
@@ -244,7 +244,7 @@ class _MultilineTextInputDialog extends StatefulWidget {
}
class _MultilineTextInputDialogState extends State<_MultilineTextInputDialog>
with _TextInputDialogStateMixin<_MultilineTextInputDialog> {
with ControllerDisposerMixin, _TextInputDialogStateMixin<_MultilineTextInputDialog> {
@override
String? get initialValue => widget.initialValue;
@@ -299,7 +299,8 @@ class _TextInputDialog extends StatefulWidget {
State<_TextInputDialog> createState() => _TextInputDialogState();
}
class _TextInputDialogState extends State<_TextInputDialog> with _TextInputDialogStateMixin<_TextInputDialog> {
class _TextInputDialogState extends State<_TextInputDialog>
with ControllerDisposerMixin, _TextInputDialogStateMixin<_TextInputDialog> {
@override
String? get initialValue => widget.initialValue;