flutter VoidCallBack ValueChange<T> 的函数定义

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

1. VoidCallback 函数类型

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

定义:

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

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

dart 复制代码
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  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});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: onPressed, // 触发 onPressed 回调
      child: Text('Press Me'),
    );
  }
}

在这个例子中:

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

2. ValueChanged 函数类型

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

定义:

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

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

dart 复制代码
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  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});

  @override
  Widget build(BuildContext context) {
    return TextField(
      onChanged: onChanged, // 触发 onChanged 回调
      decoration: InputDecoration(
        labelText: 'Enter something',
      ),
    );
  }
}

在这个例子中:

  • MyTextField 组件接收一个 ValueChanged 类型的 onChanged 回调函数。
  • 每当文本框内容变化时,onChanged 被触发,新的文本值被传递给父组件。
相关推荐
小雨下雨的雨几秒前
Flutter鸿蒙共赢——墨染算法:柏林噪声与鸿蒙生态中的数字水墨意境
算法·flutter·华为·交互·harmonyos·鸿蒙
消失的旧时光-19438 分钟前
Riverpod 本质:把“懒加载 + 依赖登记”变成 Flutter 的基础设施
flutter·riverpod·river
奋斗的小青年!!2 小时前
鸿蒙使用Flutter粒子效果实战
flutter·harmonyos·鸿蒙
LawrenceLan6 小时前
Flutter 零基础入门(十一):空安全(Null Safety)基础
开发语言·flutter·dart
行者967 小时前
Flutter与OpenHarmony跨平台分享组件深度实践
flutter·harmonyos·鸿蒙
行者967 小时前
Flutter跨平台开发在OpenHarmony上的评分组件实现与优化
开发语言·flutter·harmonyos·鸿蒙
cn_mengbei9 小时前
Flutter for OpenHarmony 实战:IconButton 图标按钮详解
flutter
cn_mengbei10 小时前
Flutter for OpenHarmony 实战:OutlinedButton 边框按钮详解
flutter
2501_9159184110 小时前
只有 Flutter IPA 文件,通过多工具组合完成有效混淆与保护
android·flutter·ios·小程序·uni-app·iphone·webview
JasonBoolean11 小时前
EasyDebug v0.0.4 重磅更新:原生 Http 支持 + 全新日志控制台
flutter