美文网首页Flutter
Flutter学习:语法

Flutter学习:语法

作者: Jason_hzb | 来源:发表于2020-07-08 18:13 被阅读0次

字符串的差异

  • dart中字符串的表示方法有很多:
'Single quotes work well for string literals.'
"Single quotes work well for string literals."
'''Single quotes work well for string literals.
dsa'''
"""Single quotes work well for string literals.
dsa"""
  • raw string,在前几种表示方式之前加上r即可。
r"Single quotes work well for string literals."
  • 字符串拼接,跟js不同,+可有可无。比如 'test '"string" 和 'test ' + "string" 都是可以的。
  • 使用变量, name 或者{name} 都可以,前一种方法的后面不能直接跟字符串,要用空格或者逗号等方式隔开
String name = 'hello';
print('$name string'); // hello string
print('${name} string'); // hello string

布尔值的转换

在js中,使用判断的时候空字符串,0,null,undefined都会被转换为false。

但是在dart中,判断条件就只能用bool值,如果是其他类型的数据,就会 抛出类型错误 。

List

dart中的List和js中的数组比较像,都可以使用..展开数组。

List list = [1, 2, 3];
List list2 = [0, ...list];

不同点:

  • ...? 防止被扩展数组为null的时候程序报错
var list;
var list2 = [0, ...?list];
  • 使用List<变量类型>声明后,该数据中就只能存放同种类型的数据,而不是随意混合
  • 突然发现dart2.3以后支持在List中直接使用表达式了
  • 判断语句
var nav = [
 'Home',
 'Furniture',
 'Plants',
 if (promoActive) 'Outlet'
];
  • 循环语句
var listOfInts = [1, 2, 3];
var listOfStrings = [
 '#0',
 for (var i in listOfInts) '#$i'
];

Map和js中的对象

// var gifts = Map();
var gifts = {'first': 'partridge'};
gifts['second'] = 'partridge';

注意:

  • 存取时都只能通过['键名']的方式访问值,而不能用.操作符,因为dart算是一个强类型语言, Map并不知道它本身有这个键 ,所以用.就会报错
  • 定义时键名如果是字符串, 不能像js一样省略

在某种意义上来说, dart的类实例和js的对象也比较像 ,可以通过.操作符访问某个键的值,毕竟声明过了嘛,哈哈。

初学dart的前端可能经常分不清 Map和类实例 ,就觉得不都是对象嘛,怎么访问不到呢?这里教大家一个方法:使用 print(变量); 如果是Map,打印出来就类似js中的对象,而如果是类实例,打印出来就是 Instance of '类' 。

其实这种困惑主要发生在使用网络请求后,其实返回的不是List就是Map,要想使用.操作符的话,就需要自己转换类型了。json转model的话可以看看这个

函数

dart函数的参数分为 positional parameters(位置参数) 和 named parameters(命名参数)。

// positional parameters(位置参数,默认必传)
bool isNoble(int atomicNumber) {
 return atomicNumber != null;
}

// named parameters(命名参数,默认可选)
bool isNoble({ int atomicNumber }) {
 return atomicNumber != null;
}

调用

// positional parameters(位置参数)
isNoble(1);

// named parameters(命名参数)
isNoble(atomicNumber: 1);

参数可选和必填:

// positional parameters(位置参数,默认必传,用[]表示可选)
bool isNoble([int atomicNumber]) {
 return atomicNumber != null;
}

// named parameters(命名参数,默认可选,使用@required表示必传)
bool isNoble({ @required int atomicNumber }) {
 return atomicNumber != null;
}

要使用required注解的话,还需要引入 package:meta/meta.dart ,否则会报错的。在flutter中, package:flutter/material.dart 已经默认引入了,所以才可以直接使用。

这个的话其实也没什么好多的了,

  • 在定义时访问实例的方法和参数时,不需要加上this
  • 构造函数中使用this.参数可以直接赋值
class User {
 String name;
 // 位置参数
 User(this.name);
 // 相当于 User([name]): this.name = name;
 
 // 命名参数的形式
 // User({this.name});
}

相关文章

  • Flutter环境配置&基本语法&如何使用库

    Flutter环境配置&基本语法&如何使用库 1、flutter基本了解 笔记开始,先贴出几个学习flutter的...

  • Dart语法学习笔记

    1、前言: 最近在学习Flutter,作为Flutter的编程语言,Dart语言语法的学习自然就编程重中之重。本文...

  • Flutter学习:语法

    字符串的差异 dart中字符串的表示方法有很多: raw string,在前几种表示方式之前加上r即可。 字符串拼...

  • Dart语法笔记总结

    Flutter学习之Dart语法特性 https://juejin.cn/post/684490379563019...

  • flutter系列

    flutter系列--Dart语法

  • Dart语法摘要(四)

    学Flutter就和学iOS一样,先学基本语言语法的使用,再学习搭UI,iOS是OC和Swift,Flutter么...

  • Dart语法摘要(三)

    学Flutter就和学iOS一样,先学基本语言语法的使用,再学习搭UI,iOS是OC和Swift,Flutter么...

  • Dart语法摘要(二)

    学Flutter就和学iOS一样,先学基本语言语法的使用,再学习搭UI,iOS是OC和Swift,Flutter么...

  • Dart语法摘要(一)

    学Flutter就和学iOS一样,先学基本语言语法的使用,再学习搭UI,iOS是OC和Swift,Flutter么...

  • Flutter从入门到进阶

    从Dart基础语法开始,领略Flutter之美,轻松全面的掌握Flutter开发核心技术。通过学习,可以让你的Fl...

网友评论

    本文标题:Flutter学习:语法

    本文链接:https://www.haomeiwen.com/subject/zpzccktx.html