Flutter鸿蒙版本灵活使用方法间的回调处理复杂化的逻辑

目录

写在前面

示例代码

main.dart:

one.dart:

代码解析

[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,用于判断操作是否成功。

  • 如果 successtrue,打印 age 的值。
  • 如果 successfalse,打印一条失败的逻辑。
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 函数模拟了一个异步操作,它接受三个参数:IDname 和一个回调函数 callback

  • 使用 MapIDname 存储为键值对。
  • 计算 list 的长度,如果不为0,调用回调函数并传入 true;否则传入 false

写在后面

通过这个简单的示例,我们展示了如何在 Flutter 中实现函数调用和回调的基本使用。回调函数是处理异步操作的有效方式,它允许我们在操作完成后执行特定的逻辑。

这种模式非常适合在网络请求、文件处理或其他需要异步操作的场景中使用。通过使用回调,我们能够在操作完成后获取结果,并根据结果做出相应的处理。这种灵活性使得代码更具可读性和可维护性。

在实际应用中,你可以根据需要修改回调函数,以实现更复杂的逻辑。这种方式可以大大增强你的 Flutter 应用的响应能力和用户体验。

相关推荐
九河云3 小时前
数字化转型中的网络安全风险与零信任架构实践
运维·科技·安全·web安全·架构
木木子99993 小时前
业务架构、应用架构、数据架构、技术架构
java·开发语言·架构
鼓掌MVP6 小时前
Java框架的发展历程体现了软件工程思想的持续进化
java·spring·架构
小马哥编程7 小时前
【软考架构】案例分析-Web应用设计(应用服务器概念)
前端·架构
花姐夫Jun7 小时前
在 Ubuntu ARM 架构系统中安装并使用花生壳实现内网穿透
arm开发·ubuntu·架构
爱笑的眼睛118 小时前
HarmonyOS 应用开发:深入探索截屏与录屏API的创新实践
华为·harmonyos
爱笑的眼睛119 小时前
深入探讨HarmonyOS中ListItem的滑动操作实现与优化
华为·harmonyos
Wang's Blog9 小时前
Nestjs框架: 微服务事件驱动通信与超时处理机制优化基于Event-Based 通信及异常捕获实践
微服务·云原生·架构·nestjs
brzhang9 小时前
读懂 MiniMax Agent 的设计逻辑,然后我复刻了一个MiniMax Agent
前端·后端·架构
YXWik69 小时前
新版若依微服务增强swagger增强集成knife4j
微服务·云原生·架构