You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在主Dart文件中获取子Widget的onSubmitted事件文本内容?

如何在主文件获取MyWidget中TextField的提交文本

要实现这个需求,只需要给MyWidget添加一个回调参数,把TextField的提交事件透传到主文件即可,具体实现如下:

1. 修改MyWidget类,添加回调参数

给MyWidget新增一个接收字符串的回调属性,在构造函数中初始化,并将其绑定到TextField的onSubmitted:

class MyWidget extends StatelessWidget {
  // 定义回调,用于传递提交的文本
  final ValueChanged<String> onSubmitted;

  const MyWidget({
    super.key,
    required this.onSubmitted, // 构造函数中要求传入该回调
  });

  @override
  Widget build(BuildContext context) {
    return TextField(
      // 将TextField的提交事件转发给外部传入的回调
      onSubmitted: onSubmitted,
    );
  }
}

2. 在主文件中使用MyWidget并处理文本

在主文件调用MyWidget时,直接传入处理提交文本的逻辑,就能拿到text字符串并使用:

class MainScreen extends StatelessWidget {
  const MainScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: MyWidget(
          onSubmitted: (text) {
            // 这里可以直接使用提交的text字符串,比如打印、更新状态等
            print('用户提交了:$text');
            // 你的业务逻辑写在这里
          },
        ),
      ),
    );
  }
}

注:ValueChanged<String>是Flutter内置的通用回调类型,等价于void Function(String),用它可以让代码更规范。这种方式遵循了“单一职责”原则,MyWidget只负责渲染输入框,文本的处理逻辑交给主文件来实现。

内容的提问来源于stack exchange,提问作者Rodolfo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 17:20:10