flutter 如何显示一个 Flink 的光标时,文本字段是启用?

flvlnr44  于 2023-01-27  发布在  Flutter
关注(0)|答案(1)|浏览(128)

我正在按编辑按钮启用文本字段的项目。现在,我希望用户现在将显示一个 Flink 的光标启用文本字段。有无论如何要这样做吗?

bvuwiixz

bvuwiixz1#

要聚焦一个TextField,你可以给予它一个FocusNode并请求聚焦。

import 'package:flutter/material.dart';

void main() {
  runApp(const MaterialApp(home: MyApp()));
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  MyAppState createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  bool textFieldEnabled = false;
  late FocusNode myFocusNode;

  @override
  void initState() {
    super.initState();
    myFocusNode = FocusNode();
  }

  @override
  void dispose() {
    myFocusNode.dispose();
    super.dispose();
  }

  void setTextFieldEnabled() {
    setState(() {
      textFieldEnabled = true;
    });
    WidgetsBinding.instance.addPostFrameCallback((_) {
      myFocusNode.requestFocus();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Column(children: [
      TextButton(onPressed: setTextFieldEnabled, child: const Text('enable')),
      TextField(enabled: textFieldEnabled, focusNode: myFocusNode)
    ]));
  }
}

注意,一开始我以为你可以在修改textFieldEnabled之后直接调用myFocusNode.requestFocus();,但是这似乎不起作用,把它放在WidgetsBinding.instance.addPostFrameCallback中似乎解决了这个问题。

相关问题