Flutter TextField输入文字时,若页面刷新,会导致光标位置发生变化。
生活随笔
收集整理的這篇文章主要介紹了
Flutter TextField输入文字时,若页面刷新,会导致光标位置发生变化。
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題描述
前提:
使用了Provider + 輸入框的形式,當輸入框的數(shù)據(jù)都輸入時,提交按鈕顯示可用,否則不可點擊。
定義了一個Model用于保存是否可點擊狀態(tài)
class StatusModel extends ChangNotifier {bool _canSubmit = false;bool get canSubmit = _canSubmit;set canSubmit(bool isCansubmit) {if (_canSubmit == isCansubmit) {return }_canSubmit = isCanSubmit;notifyListeners();} }當輸入時,校驗參數(shù),可點擊時,會更新按鈕狀態(tài)。
當更新按鈕狀態(tài)時,正在進行輸入工作的輸入框,光標發(fā)生了變化(根據(jù)實現(xiàn)邏輯不同,會跳到不同的位置)。
但是想要的效果是,保留在原來輸入的位置。
問題追查
想要的效果其實是,在按鈕可點擊時,只更新按鈕,不需要重構整個頁面,但是實際情況是,當輸入狀態(tài)發(fā)生變化時,整個頁面都被重構了。
因為Model不止封裝了按鈕狀態(tài),所有監(jiān)聽此Model的地方,都會更新。
知道了這個就簡單了。
問題解決
將Button單獨封裝在一個Selector中,只監(jiān)聽按鈕狀態(tài)。
其他監(jiān)聽數(shù)據(jù)的地方,使用select進行數(shù)據(jù)監(jiān)聽,而不是watch 的方式進行全局監(jiān)聽。
總結
以上是生活随笔為你收集整理的Flutter TextField输入文字时,若页面刷新,会导致光标位置发生变化。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows服务启动程序_在Windo
- 下一篇: 变换元素transform和过渡元素tr