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 被触发,新的文本值被传递给父组件。
相关推荐
woshihuanglaoshi1 小时前
参数验证_Flutter在鸿蒙平台确保路由参数类型安全
学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
末代iOS程序员华仔2 小时前
Swift 的角色演变:从“主角”到“最佳配角”——iOS 应用被 Flutter 替换,Swift 变成辅助?
flutter·ios·swift
_阿南_3 小时前
不是每一个Widget都会生成一个RenderObject
flutter
世人万千丶11 小时前
鸿蒙Flutter Flex多子组件权重分配
学习·flutter·华为·harmonyos·鸿蒙
GitLqr12 小时前
Flutter 无障碍开发实战:玩转 Semantics 解决视障用户使用痛点
android·flutter·dart
世人万千丶19 小时前
鸿蒙Flutter Flexible与Expanded的区别
学习·flutter·harmonyos·鸿蒙
YM52e19 小时前
鸿蒙Flutter Center居中组件:Align对齐详解
android·学习·flutter·华为·harmonyos·鸿蒙
马里马里奥-1 天前
LLM-Switch 代理:Flutter 适配与踩坑记录
flutter
浮江雾1 天前
Flutter第十节-----Flutter布局与组件全解析
android·开发语言·前端·学习·flutter·入门
浮江雾1 天前
Flutter第12节-----Flutter中Dio插件网络请求全解析
flutter