聚焦时颤动文本不会改变

问题描述

我有这个 Flutter 应用程序,我尝试使用 ascii 代码和所有这些东西。 事实证明,我正在使用颤振,并且我尝试在文本字段聚焦时更改文本,直到我失去焦点或更改屏幕然后再次返回之前它什么都不做。

我有这个文本字段,它每次我点击这些按钮之一时都会改变(见图片和 gif 链接),但是当文本字段聚焦时,变化没有得到应用。而如果我设置或按下按钮,则没有焦点的文本会发生变化。

这里使用的状态是 Getx。

class SymbolsPage extends StatelessWidget {
  final hc = Get.put(HomeController());
  final TextEditingController nameController = TextEditingController();
  Logger logger = Logger();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.yellow[800],appBar: AppBar(
        title: Text('name'),backgroundColor: appThemeData.primaryColor,),body: GetBuilder<HomeController>(
        builder: (_) => Column(
          children: [
            Container(
              margin: EdgeInsets.only(top: 30,left: 18,right: 18),child: CustomSearchText(
                text: hc.nickName,enable: true,callback: () {
// HERE IS WHERE IT CHANGES when a text in gridview is pressed 
                      nameController.text = hc.nickName;
                      // Todo: Fix bug when generating new nickname and does not change in textBox if focus is on
                },controller: nameController,callback2: (text) {
                  TextSelection prevIoUsSelection = nameController.selection;
                  // HERE IS WHERE it should  change(this is a callback for onchanged function
                  nameController.selection = prevIoUsSelection;
                  logger.v("${nameController.selection.start}");
                  _.changeNickName(text);
                },//Todo: Use svg icon
            Row(
              mainAxisAlignment: MainAxisAlignment.center,children: [
                IconButton(
                  icon: Icon(Icons.restore_sharp),onpressed: () => hc.generaterandomNickName(),IconButton(
                  icon: Icon(Icons.share_rounded),onpressed: () => hc
                      .generaterandomNickName(),//Todo: Add share nickname feature
                ),IconButton(
                    icon: Icon(Icons.copy_rounded),onpressed: () {
                      Clipboard.setData(ClipboardData(text: hc.nickName));
                      // nameController.selection = TextSelection.fromPosition(TextPosition(offset: nameController.text.length));
                    }),],const SizedBox(
              height: 10,Expanded(
              child: GridView.builder(
                  padding: EdgeInsets.only(left: 8,right: 8),gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                    childAspectRatio: 3 / 2,crossAxisspacing: 20,mainAxisspacing: 20,crossAxisCount: 4,itemCount: symbols2.length,itemBuilder: (BuildContext ctx,index) {
                    return GestureDetector(
                      onTap: () {
                        hc.inputText(symbols2[index].symbol,nameController.selection.start);
                        print("nameController.selection.start");
                      },child: Container(
                        alignment: Alignment.center,child: Text(symbols2[index].symbol),decoration: Boxdecoration(
                            color: appThemeData.accentColor,borderRadius: BorderRadius.circular(15)),);
                  }),)
          ],bottomNavigationBar: BottomBar(),);
  }
}

textfield

更多上下文的 Gif 预览:Link

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)