flutter VoidCallBack ValueChange<T> 的函数定义

embedded/2025/1/16 2:18:55/

在 Flutter 中,VoidCallbackValueChanged<T> 是两种常用的回调函数类型,它们通常用于处理事件或传递数据。下面是它们的详细定义及使用方式。

1. VoidCallback 函数类型

VoidCallback 是一个没有参数也没有返回值的回调函数类型。它通常用于简单的事件处理,比如按钮点击、切换状态等。
定义:

typedef VoidCallback = void Function();
  • VoidCallback 表示一个没有参数和返回值的回调函数。
  • 这种类型通常用于 UI 控件的事件(如点击、拖动等)。

示例:使用 VoidCallback 处理按钮点击

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('VoidCallback Example')),body: Center(child: MyButton(onPressed: () {print('Button pressed!');},),),),);}
}// 自定义按钮组件
class MyButton extends StatelessWidget {final VoidCallback onPressed; // VoidCallback 类型的回调MyButton({required this.onPressed});Widget build(BuildContext context) {return ElevatedButton(onPressed: onPressed, // 触发 onPressed 回调child: Text('Press Me'),);}
}

在这个例子中:

  • MyButton 组件接收一个 VoidCallback 类型的 onPressed 参数。
  • 当按钮被点击时,onPressed 回调函数被执行,打印消息。

2. ValueChanged 函数类型

ValueChanged<T> 是一个带有一个类型为 T 参数的回调函数类型,并且没有返回值。它通常用于将数据传递给父组件,处理用户输入或组件状态的变化。
定义:

typedef ValueChanged<T> = void Function(T value);
  • ValueChanged 表示一个接受类型为 T 的参数,并且没有返回值的回调函数。
  • T 是类型参数,表示这个回调函数接受的数据类型可以是任意类型。

示例:使用 ValueChanged 处理输入变化

import 'package:flutter/material.dart';void main() {runApp(MyApp());
}class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('ValueChanged Example')),body: Center(child: MyTextField(onChanged: (text) {print('Text changed: $text');},),),),);}
}// 自定义文本输入框组件
class MyTextField extends StatelessWidget {final ValueChanged<String> onChanged; // ValueChanged 类型的回调MyTextField({required this.onChanged});Widget build(BuildContext context) {return TextField(onChanged: onChanged, // 触发 onChanged 回调decoration: InputDecoration(labelText: 'Enter something',),);}
}

在这个例子中:

  • MyTextField 组件接收一个 ValueChanged 类型的 onChanged 回调函数。
  • 每当文本框内容变化时,onChanged 被触发,新的文本值被传递给父组件。

http://www.ppmy.cn/embedded/154276.html

相关文章

windows wsl ubuntu22 远程桌面连接

转载链接&#xff1a;https://canwdev.github.io/VM%E8%99%9A%E6%8B%9F%E6%9C%BA/WSL/wsl2%20wslg%20%E9%85%8D%E7%BD%AE%E5%B9%B6%E5%BC%80%E5%90%AF%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%28xrdp%29/ Wsl2 wslg 配置并开启远程桌面(xrdp) 准备工作 推荐到微软应用商店下载最…

61_Redis服务器端优化

1.持久化配置 Redis的持久化虽然可以保证数据安全,但也会带来很多额外的开销,因此持久化请遵循下列建议: 用来做缓存的Redis实例尽量不要开启持久化功能建议关闭RDB持久化功能,使用AOF持久化利用脚本定期在slave节点做RDB,实现数据备份设置合理的rewrite阈值,避免频繁的…

Ubuntu下安装Harbor

安装Harbor 1.Harbor简介1.1 关键特性1.2 使用场景2.安装2.0 前置要求2.0.1 硬件2.0.2 软件2.0.3 网络2.1 下载2.2 配置2.3 安装2.4 登录web-UI2.5 创建一个项目2.6 推送2.7 拉取3 服务启停在ubuntu24.04.1下安装harbor 1.Harbor简介 Harbor 是一个开源的 Docker registry 服务…

《深入理解Mybatis原理》Mybatis中的缓存实现原理

一级缓存实现 什么是一级缓存&#xff1f; 为什么使用一级缓存&#xff1f; 每当我们使用MyBatis开启一次和数据库的会话&#xff0c;MyBatis会创建出一个SqlSession对象表示一次数据库会话。 在对数据库的一次会话中&#xff0c;我们有可能会反复地执行完全相同的查询语句&…

【2024年华为OD机试】(C卷,100分)- 最大股票收益 (Java JS PythonC/C++)

一、问题描述 题目描述 假设知道某段连续时间内股票价格&#xff0c;计算通过买入卖出可获得的最大收益。 输入一个大小为 n 的数 price(p1,p2,p3,p4…….pn),pi 是第i天的股票价格。 pi 的格式为股票价格&#xff08;非负整型&#xff09;加上货币单位 Y 或者 S,其中 Y 代…

22、PyTorch nn.Conv2d卷积网络使用教程

文章目录 1. 卷积2. python 代码3. notes 1. 卷积 输入A张量为&#xff1a; A [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] \begin{equation} A\begin{bmatrix} 0&1&2&3\\\\ 4&5&6&7\\\\ 8&9&10&11\\\\ 12&13&14&15 \end{b…

ASP.NET Core - 日志记录系统(一)

ASP.NET Core - 日志记录系统&#xff08;一&#xff09; 一、日志记录二、ASP.Net Core 的日志记录2.1. 日志记录系统的接入2.2 记录日志2.3 基本配置2.3.1 日志级别2.3.2 全局输出配置2.3.3 针对特定日志提供程序的配置2.3.6 显式设置2.3.4 配置筛选原理2.3.5 日志作用域 一、…

nvim 打造成可用的IDE(2)

上一个 文章写的太长了&#xff0c; 后来再写东西 就一卡一卡的&#xff0c;所以新开一个。 主要是关于 bufferline的。 之前我的界面是这样的。 这个图标很不舒服有。 后来发现是在这里进行配置。 我也不知道&#xff0c;这个配置 我是从哪 抄过来的。 测试结果&#xff1…