当前位置: 首页 > 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.dtcms.com/a/312786.html

相关文章:

  • day39 力扣198.打家劫舍 力扣213.打家劫舍II 力扣337.打家劫舍 III
  • 常见框架漏洞靶场攻略
  • Java 实现poi方式读取word文件内容
  • 力扣967:连续差相同的数字
  • Mysql1
  • Docker-03.快速入门-部署MySQL
  • python的蛋糕店管理系统
  • MySQL的创建管理表:
  • 求根到叶子节点数字之和
  • 【数据分享】南京诗歌文学地理数据集(获取方式看文末)
  • 电机结构设计与特性曲线分析:基于MATLAB和FEMM的仿真研究
  • 6. 平台总线
  • 机器学习第四课之决策树
  • Shell 脚本流程控制语句详解(四):while 循环详解
  • lua table常用函数汇总
  • Django 序列化详解:从 Model 到 JSON,全面掌握数据转换机制
  • 使用AndroidStudio调试Framework源码
  • 腾讯人脸识别
  • 数据治理:DQC(Data Quality Center,数据质量中心)概述
  • [嵌入式embed]C51单片机STC-ISP提示:正在检测目标单片机
  • 《前端无障碍设计的深层逻辑与实践路径》
  • MyBatis动态SQL精要:从<if>到<foreach>的灵活拼接之道
  • 高质量数据集|建设三大难点
  • [硬件电路-140]:模拟电路 - 信号处理电路 - 锁定放大器概述、工作原理、常见芯片、管脚定义
  • [硬件电路-133]:模拟电路 - 信号处理电路 - 电荷放大器概述、工作原理、常见芯片、管脚定义
  • 深度学习(鱼书)day10--与学习相关的技巧(后两节)
  • 仿TCmalloc内存分配器
  • 后端研发转型爬虫实战:Scrapy 二开爬虫框架的避坑指南
  • C++入门自学Day5-- C/C++内存管理(续)
  • jvm之jconsole的使用