Flutter(三)——一篇文章掌握Dart语言的用法(二)

简介: Flutter(三)——一篇文章掌握Dart语言的用法(二)

运算符


(1)三目运算符


在上面类型介绍中,我们已经介绍了一些运算符,这里我们介绍上面没有提及的运算符,以及一些要注意的事项,首先,就是Dart语言的三目运算符,这个相当的重要,经常与flutter中的state状态管理结合使用,来判断组件的状态,用法如下:

expr1 ?? expr2//如果expr1非空,则返回expr1,否则返回expr2

我们在来看一个与Java类似的用法:

int a=20;
var va1=a>10 ? a : 0;


(2)~/


细心的读者,应该看到博文上面提到了一个~/运算符,这个是返回一个整数结果,取商,使用方式如下:

var va1=12~/7;
print(va1);//打印出来的是1


(3)级联操作符


这个有点类似一些语言的链式调用,使用过Java和JavaScript应该见的非常多,使用方式如下:

String str=(new StringBuffer()
  ..write('Li ')
  ..write('Yuan ')
  ..write('Jing').toString());
print(str);//会打印除Li Yuan Jing


(4)as,is和is!


as:判断属于某种类型


is:如果对象具有指定类型,则为True


is!:如果对象具有指定类型,则为False


异常捕获

要说Dart语言有什么特殊的强大功能,我想捕获异常真的是非常的好用,比Java还要强大,我们先来看一段代码:

throw Exception('我是异常');

我们不仅仅需要抛出异常,还要捕获异常,所以在Dart语言中,捕获异常的详细代码如下:

try{
//捕获特定类型异常
}on AuthorizationException catch(e){
//捕获特定类型异常,但不要这个对象
}on Exception{
//捕获所有异常
}catch(e){
//....
}finally{
//....
}


函数Function

Dart语言是一门面向对象语言,所以函数也是对象,并且函数的类型是Function。这点和JavaScript非常相似。在JavaScript里面Function是可以作为参数传递的,在Flutter里面,也不例外,即函数可以分配给变量或作为参数传递给其他函数,定义函数的代码如下:

bool getName(name){
  return name;
}


main函数

没有应用程序都必须有一个顶层main函数,作为程序的入口,这一点和Java一样,它是应用程序的入口点。该函数返回void并具有List的可选参数。第二篇我们讲解过源码,入口函数就是这样:

void main()=>runApp(MyApp());

可选参数与必传递参数

定义可选参数的函数,顾名思义,就是不传这些参数也可以调用函数,例如:

void getName({String name,int age}){
}


这里可以传递一个,也可以传递二个,也可以一个都不传递。那么必传递该怎么写呢?我们直接上代码:

void getName({@required String name,@required int age}){
}


必传参数用@required修饰,在Dart语言中,使用@required有利于静态代码分析器进行检查。


可选的位置参数

一个函数里面即包含可选参数,也包含必选参数,我们需要这样写:

void getName({String name,int age,[String school]}){
  if(school!=null){
  print('学校是$school');
  }
}


默认参数

默认参数是编译时的常量,在函数的参数后面,使用“=”为参数赋值,这个有一点像JavaScript里的ES6特性,例如:


void getName({String name='李元静',int age=27}){
}


函数作为参数传递

既然我们开头提到了函数可以作为参数传递,我们不妨直接上代码理解:

void getName(String name){
  print(name);
}
var names=['小静','小尧','小帆'];
names.forEach(getName);


函数作为变量

函数也可以直接赋值给一个变量,并且把这个变量作为函数来调用,代码如下:

var printName=(name){
  print(name);
};
printName('Li YuanJing');
相关文章
|
4月前
|
开发框架 Dart 前端开发
Flutter 是谷歌推出的一款高效跨平台移动应用开发框架,使用 Dart 语言,具备快速开发、跨平台支持、高性能、热重载及美观界面等特点。
Flutter 是谷歌推出的一款高效跨平台移动应用开发框架,使用 Dart 语言,具备快速开发、跨平台支持、高性能、热重载及美观界面等特点。本文从 Flutter 简介、特点、开发环境搭建、应用架构、组件详解、路由管理、状态管理、与原生代码交互、性能优化、应用发布与部署及未来趋势等方面,全面解析 Flutter 技术,助你掌握这一前沿开发工具。
222 8
|
4月前
|
容器
Flutter &&鸿蒙next中的 Stack 和 Positioned 用法详解
在 Flutter 中,Stack 和 Positioned 是创建层叠布局和灵活定位元素的常用组件。Stack 可以将多个子组件叠加在一起,允许子组件相互重叠;Positioned 用于在 Stack 内部精确控制子组件的位置。本文详细介绍了它们的基本用法、属性和应用场景,包括动画、弹出层和悬浮按钮等。
196 1
|
4月前
|
Dart 安全 编译器
Flutter结合鸿蒙next 中数据类型转换的高级用法:dynamic 类型与其他类型的转换解析
在 Flutter 开发中,`dynamic` 类型提供了灵活性,但也带来了类型安全性问题。本文深入探讨 `dynamic` 类型及其与其他类型的转换,介绍如何使用 `as` 关键字、`is` 操作符和 `whereType<T>()` 方法进行类型转换,并提供最佳实践,包括避免过度使用 `dynamic`、使用 Null Safety 和异常处理,帮助开发者提高代码的可读性和可维护性。
138 1
|
4月前
|
Dart
flutter dart mixin 姿势
flutter dart mixin 姿势
|
5月前
|
Dart 开发者 Windows
flutter:dart的学习
本文介绍了Dart语言的下载方法及基本使用,包括在Windows系统上和VSCode中的安装步骤,并展示了如何运行Dart代码。此外,还详细说明了Dart的基础语法、构造函数、泛型以及库的使用方法。文中通过示例代码解释了闭包、运算符等概念,并介绍了Dart的新特性如非空断言操作符和延迟初始化变量。最后,提供了添加第三方库依赖的方法。
59 12
|
6月前
|
Dart
如何在 Flutter 项目中使用 Dart 语言?
如何在 Flutter 项目中使用 Dart 语言?
161 58
|
7月前
|
Dart 开发工具
消除Flutter doctor的警告Warning: `dart` on your path resolves to xxx/bin/dart
消除Flutter doctor的警告Warning: `dart` on your path resolves to xxx/bin/dart
146 0
|
10月前
|
前端开发 C++ 容器
Flutter-完整开发实战详解(一、Dart-语言和-Flutter-基础)(1)
Flutter-完整开发实战详解(一、Dart-语言和-Flutter-基础)(1)
|
10月前
|
Dart 前端开发 开发者
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
【4月更文挑战第30天】Dart是Google为Flutter框架打造的高效编程语言,具有易学性、接口、混入、抽象类等特性。本文概述了Dart的基础语法,包括静态类型(如int、String)、控制流程(条件、循环)、函数、面向对象(类与对象)和异常处理。此外,还介绍了库导入与模块使用,帮助开发者快速入门Flutter开发。通过学习Dart,开发者能创建高性能的应用。
104 0
【Flutter前端技术开发专栏】Flutter Dart语言基础语法解析
|
10月前
|
开发框架 Dart Java
Flutter的核心:Dart语言基础——语法与特性深度解析
【4月更文挑战第26天】Flutter框架背后的Dart语言,以其简洁的语法和独特特性深受开发者喜爱。本文深入解析Dart的语法与特性,如类型推导、动态静态类型系统、统一的类接口、访问权限控制以及并发编程支持。了解并掌握Dart,能助开发者更高效地利用Flutter构建高性能移动应用。

热门文章

最新文章

  • 1
    【Flutter 开发必备】AzListView 组件全解析,打造丝滑索引列表!
    33
  • 2
    flutter3-wetrip跨平台自研仿携程app预约酒店系统模板
    34
  • 3
    通过外部链接启动 Flutter App(详细介绍及示例)
    33
  • 4
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    161
  • 5
    零基础构建即时通讯开源项目OpenIM移动端-Flutter篇
    101
  • 6
    flutter3-dart3-dymall原创仿抖音(直播+短视频+聊天)商城app系统模板
    62
  • 7
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    178
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    56
  • 9
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
    82
  • 10
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    179