当前位置: 首页 > ops >正文

Flutter基础(控制器)

第1步:找个遥控器(创建控制器)​
// 就像买新遥控器要装电池
TextEditingController myController = TextEditingController();
​第2步:连上你的玩具(绑定到组件)​
TextField(controller: myController, // 把遥控器绑到输入框decoration: InputDecoration(labelText: "写点东西..."),
)
​第3步:用遥控器控制(操作组件)​
// 比如点按钮时获取输入框文字
onPressed: () {String text = myController.text; // 读取内容print("你写了:$text");myController.clear(); // 清空输入框(就像按复位键)
}
​第4步:不用时关掉(避免卡顿)​
// 就像玩具玩完要关电源
@override
void dispose() {myController.dispose(); // 关闭控制器super.dispose();
}
 

完整代码例子

import 'package:flutter/material.dart';void main() {// 启动应用,根组件为 MyApprunApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {// 创建 Material 风格应用框架return MaterialApp(title: '控制器示例',home: Scaffold(appBar: AppBar(title: const Text('文本控制器演示')),body: const Center(child: TextEditorDemo()), // 主页面内容),);}
}class TextEditorDemo extends StatefulWidget {const TextEditorDemo({super.key});@overrideState<TextEditorDemo> createState() => _TextEditorDemoState();
}class _TextEditorDemoState extends State<TextEditorDemo> {// 1. 创建控制器实例final TextEditingController _controller = TextEditingController();String _displayText = ""; // 存储显示文本@overridevoid initState() {super.initState();// 2. 监听输入变化(可选)_controller.addListener(() {print("实时输入: ${_controller.text}"); // 控制台打印输入内容[6](@ref)});}@overridevoid dispose() {// 5. 销毁控制器(必须!避免内存泄漏)_controller.dispose(); // 释放控制器资源[1,6](@ref)super.dispose();}void _updateText() {// 3. 使用控制器获取输入内容setState(() {_displayText = _controller.text; // 更新显示文本});}void _clearText() {// 4. 使用控制器清空输入_controller.clear(); // 清空文本框内容[1](@ref)setState(() => _displayText = "");}@overrideWidget build(BuildContext context) {return Padding(padding: const EdgeInsets.all(20.0),child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [// 文本输入框绑定控制器TextField(controller: _controller, // 绑定控制器到输入框[5](@ref)decoration: const InputDecoration(labelText: "输入内容",border: OutlineInputBorder(),suffixIcon: Icon(Icons.edit),),onSubmitted: (value) => _updateText(), // 键盘提交时触发),const SizedBox(height: 20),// 显示控制器获取的文本Text("当前内容: $_displayText",style: const TextStyle(fontSize: 18, color: Colors.blue),),const SizedBox(height: 20),Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: [// 更新文本按钮ElevatedButton(onPressed: _updateText, // 点击时更新显示文本child: const Text("显示内容"),),// 清空按钮ElevatedButton(onPressed: _clearText, // 点击时清空文本[1](@ref)style: ElevatedButton.styleFrom(backgroundColor: Colors.red),child: const Text("清空"),),],),],),);}
}

http://www.xdnf.cn/news/14697.html

相关文章:

  • Python基础(吃洋葱小游戏)
  • LINUX628 NFS 多web;主从dns;ntp;samba
  • WOE值:风险建模中的“证据权重”量化术——从似然比理论到FICO评分卡实践
  • SpringMVC系列(五)(响应实验以及Restful架构风格(上))
  • H6-108QB2W QILSTE/旗光
  • WebRTC(十二):DTLS
  • Cesium快速入门到精通系列教程十一:Cesium1.74中高性能渲染上万Polyline
  • 2025第十五届上海生物发酵展:江苏健达干燥盛装赴会
  • 数据结构:最小生成树—Prim(普里姆)与Kruskal(克鲁斯卡尔)算法
  • 使用asyncio构建高性能网络爬虫
  • Linux离线搭建Redis (centos7)详细操作步骤
  • Python助力自动驾驶:深度学习模型优化全攻略
  • Flutter基础(Riverpod)
  • 用AI给AR加“智慧”:揭秘增强现实智能互动的优化秘密
  • 【学习笔记】深入理解Java虚拟机学习笔记——第12章 Java内存模型与线程
  • RNN(循环神经网络)与LSTM(长短期记忆网络)输出的详细对比分析
  • 战神授权后台报错:Parse error: syntax error, unexpected end of file in解决办法
  • zookeeper Curator(3):Watch事件监听
  • 搭建Flink分布式集群
  • 深入详解:随机森林算法——概念、原理、实现与应用场景
  • Spring Cloud:高级特性与最佳实践
  • Python基础知识之文件
  • 深入剖析 CVE-2021-3560 与 CVE-2021-4034:原理、区别与联系
  • SQL学习笔记4
  • python基于Django+mysql实现的图书管理系统【完整源码+数据库】
  • 基于springboot的火锅店点餐系统
  • 代码随想录|图论|09沉没孤岛
  • 中国双非高校经费TOP榜数据分析
  • 【数据结构】B树的介绍及其实现C++
  • 鸿蒙OS开发IoT控制应用:从入门到实践