当前位置: 首页 > news >正文

Flutter 函数的基本使用

声明

	返回值类型 函数名称(参数列表){函数体;return 返回值;}
	void  函数名称(参数列表){函数体;}

例如:

int max(int a, int b) {int result;if (a > b) {result = a;} else {result = b;}return result;
}

可选的命名参数

声明定义方法:{参数类型? 参数名,参数类型?参数名}
调用:“参数名:值”

void main() {printInt();printInt(str: "111");//可选参数指定实参printInt2();
}void printInt({String? str, String? srt2}) {print(str);
}//有默认值
void printInt2({String? str = "222", String? srt2}) {print(str);
}I/flutter ( 7019): null
I/flutter ( 7019): 111
I/flutter ( 7019): 222

可选的位置参数

声明定义方法:[参数名,参数名]
调用方法:“值”

void main() {printMM(1);printMM(1,20);printMM2();
}void printMM([int? a, int? b]){print(a);
}
//有默认值
void printMM2([int? a = 100, int? b]){print(a);
}I/flutter ( 7019): 1
I/flutter ( 7019): 1
I/flutter ( 7019): 100

匿名函数

void main() {() {print("匿名函数");}();(int a) {print("有参数的匿名函数$a");}(50);var x = () {print("有返回值值的匿名函数");return "返回值";}();print(x);
}I/flutter ( 7019): 匿名函数
I/flutter ( 7019): 有参数的匿名函数50
I/flutter ( 7019): 有返回值值的匿名函数
I/flutter ( 7019): 返回值

箭头函数

/*int max(int a, int b) {return a > b ? a : b;
}*/
等同
int max(int a, int b) => a > b ? a : b;

闭包函数

(1)内部函数为有参数的匿名函数

void main() {var result = test();print(result(2.0));// 12.56
}Function test() {const PI = 3.14;return (double r) => r * r * PI;
}

(2)内部函数为无参数的匿名函数

void main() {var result = test();print(result());
}Function test() {const PI = 3.14;return () => PI;
}

异常

(1)抛出异常

void main() {throwMyException();
}void throwMyException(){throw "这是一个异常";
}
E/flutter ( 7019): [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: 这是一个异常
E/flutter ( 7019): #0      throwMyException (package:first_flutter/main.dart:86:3)
E/flutter ( 7019): #1      main (package:first_flutter/main.dart:81:3)
E/flutter ( 7019): #2      _runMain.<anonymous closure> (dart:ui/hooks.dart:320:23)
E/flutter ( 7019): #3      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:314:19)
E/flutter ( 7019): #4      _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:193:12)

(2)捕获异常 try-catch-finally
不会中断执行

void main() {List lists = [1, 2];print(lists[0]);try{print(lists[2]);}catch(e){}print(lists[1]);
}I/flutter ( 7019): 1
I/flutter ( 7019): 2
http://www.lryc.cn/news/608719.html

相关文章:

  • OpenCV轻松入门_面向python(第一章OpenCV入门)
  • 企业IT管理——集团IT项目实施管理办法模板
  • Linux Deepin深度操作系统应用商店加载失败,安装星火应用商店
  • 学习笔记《区块链技术与应用》第六天 问答 匿名技术 零知识证明
  • 机器翻译的分类:规则式、统计式、神经式MT的核心区别
  • 基于单片机火灾报警系统/防火防盗系统设计
  • 块三角掩码(Block-Triangular Masking)
  • MySQL的创建管理表:
  • Memcached Slab分配器:零碎片的极速内存管理
  • [spring-cloud: 服务发现]-源码解析
  • Day 30:模块和库的导入
  • 风光储综合能源系统双层优化规划设计【MATLAB模型实现】
  • 第九章:了解特殊场景下的redis
  • 控制建模matlab练习07:比例积分控制-③PI控制器的应用
  • Spring 03 Web springMVC
  • ESP32学习-I2C(IIC)通信详解与实践
  • C++:STL中的栈和队列的适配器deque
  • Spring Boot AOP 优雅实现异常重试机制
  • AD方案(OpenLDAP或微软AD)适配信创存在的不足以及可能优化方案
  • Nvidia Orin DK 刷机CUDA TensorRT+硬盘扩容+ROS+Realsense+OpenCV+Ollama+Yolo11 一站式解决方案
  • CUDA杂记--nvcc使用介绍
  • Elastic 9.1/8.19:默认启用 BBQ,ES|QL 支持跨集群搜索(CCS)正式版,JOINS 正式版,集成 Azure AI Foundry
  • Jupyter Notebook 中高效处理和实时展示来自 OpenCV 和 Pillow 的图像数据探究
  • Jetpack Compose for XR:构建下一代空间UI的完整指南
  • SpringBoot+Vue高校实验室预约管理系统 附带详细运行指导视频
  • 力扣经典算法篇-41-旋转图像(辅助数组法,原地旋转法)
  • RabbitMQ面试精讲 Day 9:优先级队列与惰性队列
  • 昇思学习营-开发版-模型推理和性能优化
  • Android 之 MVP架构
  • Redis+Lua的分布式限流器