目录
[1. 主入口 main 函数](#1. 主入口 main 函数)
[2. MyApp 类](#2. MyApp 类)
[3. CallbackExample 类](#3. CallbackExample 类)
[4. onok 函数](#4. onok 函数)
[5. one 函数](#5. one 函数)
写在前面
在 Flutter 开发中,灵活使用函数之间的回调带来了多种好处,包括提高可重用性、简化异步编程、增强解耦设计以及提升用户体验。回调不仅使代码更易于理解和维护,还使得处理复杂逻辑变得简单且高效。因此,掌握回调函数的使用是 Flutter 开发者的重要技能。
示例代码
以下是我们将要讨论的完整代码:
main.dart:
Dart
import 'package:flutter/material.dart';
import 'one.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Custom Callback Example',
home: CallbackExample(),
);
}
}
var age = "18";
class CallbackExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Custom Callback Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
onok();
},
child: Text('开始任务'),
),
),
);
}
}
onok() {
one(123456789, "XIAOLI", (success) {
if(success == true){
print("age=$age");
}else if(success == false){
print("one函数回调false的逻辑");
}
});
}
one.dart:
Dart
Future<void> one(int? ID, String? name,Function(bool) callback) async {
Map<String,dynamic>List = {
'ID':ID,
'name':name
};
var num = List.length;
if(num!=0){
callback(true);
}
}
代码解析
1. 主入口 main
函数
Dart
void main() {
runApp(MyApp());
}
main
函数是 Flutter 应用的入口点,它调用 runApp
函数来启动应用。这里我们传入一个 MyApp
实例。
2. MyApp
类
Dart
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Custom Callback Example',
home: CallbackExample(),
);
}
}
MyApp
是应用的根组件,返回一个 MaterialApp
,它设置了应用的标题和主页。在这个例子中,主页是 CallbackExample
。
3. CallbackExample
类
Dart
class CallbackExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Custom Callback Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
onok();
},
child: Text('开始任务'),
),
),
);
}
}
CallbackExample
是一个无状态组件,其中包含一个 ElevatedButton
按钮。当用户点击按钮时,将调用 onok
函数。
4. onok
函数
Dart
void onok() {
one(123456789, "XIAOLI", (success) {
if (success == true) {
print("age=$age");
} else if (success == false) {
print("one函数回调false的逻辑");
}
});
}
onok
函数调用 one
函数,传入三个参数:一个 ID
(123456789)、一个 name
("XIAOLI")以及一个回调函数。回调函数接受一个布尔值 success
,用于判断操作是否成功。
- 如果
success
为true
,打印age
的值。 - 如果
success
为false
,打印一条失败的逻辑。
5. one
函数
Dart
Future<void> one(int? ID, String? name, Function(bool) callback) async {
Map<String, dynamic> list = {
'ID': ID,
'name': name
};
var num = list.length;
// 如果数据不为空,则调用回调函数并返回成功状态
if (num != 0) {
callback(true);
} else {
callback(false);
}
}
one
函数模拟了一个异步操作,它接受三个参数:ID
、name
和一个回调函数 callback
。
- 使用
Map
将ID
和name
存储为键值对。 - 计算
list
的长度,如果不为0,调用回调函数并传入true
;否则传入false
。
写在后面
通过这个简单的示例,我们展示了如何在 Flutter 中实现函数调用和回调的基本使用。回调函数是处理异步操作的有效方式,它允许我们在操作完成后执行特定的逻辑。
这种模式非常适合在网络请求、文件处理或其他需要异步操作的场景中使用。通过使用回调,我们能够在操作完成后获取结果,并根据结果做出相应的处理。这种灵活性使得代码更具可读性和可维护性。
在实际应用中,你可以根据需要修改回调函数,以实现更复杂的逻辑。这种方式可以大大增强你的 Flutter 应用的响应能力和用户体验。