簡體   English   中英

Flutter focusnode 問題不起作用 - 只有單擊它才有效

[英]Flutter focusnode problem not working - only by clicking it works

我正在使用掃描條形碼的設備,我希望在每次閱讀焦點后返回 TextFormFiled - 下面的代碼完成工作,我看到 cursor 專注於 TextFormFiled 但是當我下次閱讀時它什么也沒顯示,我需要手動只需用我的手指點擊文本文件即可激活焦點,有人可以幫助我嗎(設備在每次閱讀后返回 LF)

  TextFormField(
                                    decoration: new InputDecoration(
                                        border: new OutlineInputBorder(
                                          borderRadius: const BorderRadius.all(
                                            const Radius.circular(10.0),
                                          ),
                                        ),
                                        filled: true,
                                        hintStyle: new TextStyle(
                                            color: Colors.grey[800]),
                                        hintText: "Read BarCode",
                                        fillColor: Colors.white70),
                                    focusNode: myFocusNode,
                                    controller: search,
                                    autofocus: true,
                                    maxLines: null,
                                    validator: (value) {
                                      //    print(value.toString().runes);
                                      if (value.toString().contains("\n")) {
                                        fetchProducts(value!);
                                        search.text = "";
                                      } else {}
                                    },
                                  ),

使用您的myFocusNode激活對 textField 的焦點。

void function(){
  /// after scanning is complete call this 
  focusNode.requestFocus()
}

我通過了這個並確實像這樣解決了它:

_addItem() {
    final isValid = _formKey.currentState?.validate() ?? false;
    if (!isValid) {
        return;
    }
    final ean = int.parse(_eanController.text);
    listaEan.add(ean);
    _eanController.text = '';
    setState(() {
        WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
            _eanFocus.requestFocus();
        });
    });
}

但在物理掃描設備中,確實工作正常。 不使用 addPostFramaCallback。

暫無
暫無

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

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