微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

聚焦时颤动文本不会改变

如何解决聚焦时颤动文本不会改变

我有这个 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 举报,一经查实,本站将立刻删除。