前提
Flutter初心者です。
riverpodのstateを編集する入力エリアを作成しようとしています。
発生している問題
TextFieldを使った入力エリアだと、編集時にカーソルが左端に移動してしまいます。
TextFormFieldのinitialValueを使えば期待通りの動作をしますが、Formの入力エリアにするつもりはなく、Enter時の動作(onSubmited)が必要なのでTextFieldを利用したいです。
質問
riverpodを使う場合、どのように入力エリアを実装するものなのでしょうか?
なぜこのような挙動をするのでしょうか?
該当のソースコード
dart
1final _textProvider = StateProvider((ref) => "Hello"); 2 3class MyApp extends ConsumerWidget { 4 5 Widget build(context, ref) { 6 final text = ref.watch(_textProvider); 7 8 return MaterialApp( 9 home: Scaffold( 10 body: Column(children: [ 11 TextField( 12 onChanged: (newText) { 13 ref.read(_textProvider.notifier).update((state) => newText); 14 }, 15 controller: TextEditingController(text: text), 16 ), 17 Text(text), 18 ]), 19 ), 20 ); 21 } 22} 23
試したこと
- riverpod, texteditingcontroller, cursor などのワードでいくつか検索しました。
- rebuild時にTextEditingControllerの持っているカーソル位置などの情報がリセットされているのかと思い、TextEditingControllerをグローバルに宣言して、buildメソッドで
_controller.text = text
で代入してみましたが、やはり期待通りにはなりませんでした。
補足情報(FW/ツールのバージョンなど)
Windowsデバイスで実行しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/27 10:32