簡體   English   中英

Flutter 焦點更改時 TextField 正在丟失數據

[英]Flutter TextField is losing data when focus changes

我有這樣的文本表單:如果我沒有為第二個文本表單定義鍵盤類型,那么當我從第一個字段到第二個字段的 go 時沒有問題,我不會丟失第一個字段的輸入。 但是如果我在我的代碼中定義鍵盤類型,當我點擊第二個字段時它會丟失第一個字段的數據。

注意:我使用的是 Riverpod 作為 State 管理。


class NewTx extends StatelessWidget {
  final TextEditingController titleController = TextEditingController(text: '');
  final TextEditingController priceController = TextEditingController(text: '');

  @override
  Widget build(BuildContext context) {
    return Column(crossAxisAlignment: CrossAxisAlignment.stretch, children: [
      TextFormField(
          controller: titleController,
          decoration: InputDecoration(hintText: 'Title')
          ),
      TextFormField(
          keyboardType: TextInputType.number,
          controller: priceController,
          decoration: InputDecoration(hintText: 'Title')),
      Container(
          alignment: AlignmentDirectional.bottomEnd,
          child: IconButton(
              icon: Icon(Icons.add),
              onPressed: () => context.read(transactionProvider).addTx(
                  Transaction(titleController.text, priceController.text))))
    ]);
  }
}


編輯:riverpod_hooks 和 useTextEditingController 工作正常。(除了有狀態小部件的另一種解決方案。)

我認為問題不在於失去焦點,而在於重新構建小部件這一事實,它重新創建了 class,因此 - 控制器保持重新創建文本。

我建議將 NewTx 更改為有狀態小部件並將控制器移動到其 state。

final TextEditingController titleController = TextEditingController(text:''); 
final TextEditingController priceController = TextEditingController(text: '');

你可以試試這樣嗎?

final TextEditingController titleController = TextEditingController();
final TextEditingController priceController = TextEditingController();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM