Flutter Dart语言入门一篇就够了

Dart介绍

在这里插入图片描述

Dart 是一种用于开发Android、IOS、 Web和桌面应用的开源编程语言。

它是由Google开发的。

Dart 语法类似于 C、javascript 和 java 语言。

先决条件

该教程假设您有一定的编程基础,在此编程基础上您可以很快的掌握Dart语言。

在开始本教程之前,我们假设您已经安装了 Dart SDK(如果您没有安装 Dart SDK,请在开始之前安装它)以及必须在您的计算机上设置本地编程环境。
链接:https://dart.cn/get-dart

Dart关键字

Dart关键字共有60多个,在我的另一篇博客做了非常详细的介绍。了解一门语言的关键字,可以快速掌握该语言的语法,非常非常重要关键。
链接:https://blog.csdn.net/weixin_44758662/article/details/124937490

变量

定义变量

var name = 'Bob';

指定类型:

String name = 'Bob';

Final 和 Const

如果更改一个变量,可以使用关键字 final 或者 const 修饰变量,这两个关键字可以替代 var 关键字或者加在一个具体的类型前。一个 final 变量只可以被赋值一次;一个 const 变量是一个编译时常量(const 变量同时也是 final 的)。顶层的 final 变量或者类的 final 变量在其第一次使用的时候被初始化。

final String name = 'Bobby';

Dart数据类型

TypesKeyWorkDescription
数字int, double, numDart 中的数字用于表示数字文字
字符串String字符串表示一个字符序列
布尔值bool它表示布尔值 true 和 false
列表List它是一组有序的对象
MapMap它将一组值表示为键值对

1.数字

数字是用来保存数值的数据类型

int 数据类型用于表示整数。
double 数据类型用于表示 64 位浮点数。
num 类型是 int 或 double 类型。

void main() {
   int a = 2;             
   double b = 1.5;  
}

2.字符串

用来表示一个字符序列。它是一个 UTF-16 代码单元序列。关键字 String 用于表示字符串文字。字符串值嵌入在单引号或双引号中。

void main() {
   String str1= 'good'; 
   String str2= "good"; 
}

3.布尔值

表示布尔值真假,用关键字 bool 表示。

void main() {
  String str = 'Coding is '; 
  String str1 = 'Fun'; 
    
  bool val = (str==str1);
  print (val);  
}
 

4.列表

列表数据类型类似于其他编程语言中的数组。列表用于表示对象的集合。它是一组有序的对象。 用List表示。

void main() 
{ 
    List<String>  list= [];
    list[0] = 'Good'; 
    list[1] = 'CSDN'; 
} 

5. Map

Map对象是一个键值对。地图上的键和值可以是任何类型。它是一个动态集合。

void main() { 
  Map map = new Map(); 
  map['First'] = 'First'; 
  map['Second'] = 'Second'; 
  map['Third'] = 'Third';
  print(map); 
}  

注意: 如果未指定变量的类型,则变量的类型为dynamic。动态关键字显式用作类型注释。

Dart运算符

运算符是用于对操作数执行某些操作的特殊符号。Dart 有许多内置运算符,可用于执行不同的功能,例如,‘+’ 用于添加两个操作数。运算符旨在对一个或两个操作数进行操作。
以下是 Dart 中的各种类型的运算符:
算术运算符
关系运算符
类型测试运算符
赋值运算符
逻辑运算符
条件运算符
级联符号运算符

1.算术运算符

此类运算符包含用于对操作数执行算术运算的运算符。它们是二元运算符,即它们作用于两个操作数。

符号作用
+
-
*
/
~/除然后去掉小数点
%取余
void main()
{
    int a = 2;
    int b = 3;
    var c = a + b;
    var d = a - b;
}

2.算术运算符

此类运算符包含用于对操作数执行关系运算的运算符。并将结果作为布尔表达式给出。

符号作用
>大于
<小于
>=大于或等于
<=小于或等于
==等于
!=不等于
void main()
{
    int a = 2;
    int b = 3;
    bool c = a > b;
    bool d = a < b;
}

3.类型运算符

符号作用
is如果对象具有特定类型,则将布尔值 true 作为输出
is!如果对象具有特定类型,则将布尔值 false 作为输出
as类型转换
void main()
{
    String a = 'Good';
    double b = 3.3;
    print(a is String);
    print(b is !int);
}

4.赋值运算符:

符号作用
=用于为表达式或变量赋值
??=仅当它为空时才分配该值
void main()
{
    int a = 5;
    int b = 7;
    var c = a * b; 
    print(c);
    var d;
    d ? ? = a + b; 
    print(d);
    d ? ? = a - b; 
}

输出

35 
12 
12

5.逻辑运算符

此类运算符包含用于在逻辑上组合两个或多个条件的运算符

符号作用
&&如果两者都为真,则返回真
||如果其中一个条件为真,则返回真
!反转结果
void main()
{
    int a = 5;
    int b = 7;
 
    bool c = a > 10 && b < 10;
    print(c);
 
    bool d = a > 10 || b < 10;
    print(d);
 
    bool e = !(a > 10);
    print(e);
}

6. 条件运算符

符号作用
bool? a:b如果条件为真,则执行 a,否则执行 b
a??b如果a不为 null,则返回其值,否则返回b值。
void main()
{
    int a = 5;
    int b = 7;
 
    var c = (a < 10) ? "Statement is Correct, Geek" : "Statement is Wrong, Geek";
    print(c);
    int n;
    var d = n ? ? "n has Null value";
    print(d);

    n = 10;
    d = n ? ? "n has Null value";
    print(d);
}

输出

Statement is Correct, Geek
n has Null value
10 

7.级联符号运算符

此类运算符允许您对同一元素执行一系列操作。它允许您对同一个对象执行多个方法。

符号作用
它用于对同一个对象执行多个方法
void main()
{
    User user = new User();
   
    user..setName("userName")
        ..setAge(15);
}

Dart流程控制语句

if
if else
if else if else
switch case

Dart循环语句

for
while
do while

中断循环

break
continue

Dart函数

函数让您可以包装一组语句,这意味着执行任何特定任务并为其命名,以便以后可以从程序中的任何位置调用它。函数可以很容易地将整个程序划分为执行该程序特定任务的子单元,这样它就增强了模块化方法并增加了程序的代码可重用性。我们在函数调用中传递信息作为其参数,该函数可以将某个值返回到它调用的位置,也可以不返回任何值。

函数

格式:

returnType funcName (parameter)
{
   return value;
}

例子:

int add(int n1, int n2){
    int result;
    result = n1+n2;
    return result;
}

可选参数

在 Dart 中,我们可以将任何参数设置为可选;即使未提供这些参数的值,它也允许调用/执行带有可选参数(如果有)的函数。可以通过附加问号及其名称来将参数设置为可选。

1.可选位置参数

可选的位置参数可以通过用逗号分隔并包含在方括号 ([]) 中的单个参数来指定。调用定义了可选位置参数的函数可以指定可变数量的参数。

void functionName(param1, [param2, param3]) { }
void main() { 
  testParam(12);
  testParam(123,21);
}  
testParam(p1,[o1]) { 
   print("Param Value Is : ${p1} and Option Param Valus Is : ${o1}"); 
}

2.可选命名参数

命名的位置参数可以通过用逗号分隔并包含在大括号 ({ }) 中的单个参数名称来指定。

void functionName(param1, {param2, param3}) {}
void main() { 
  testParam(12);
  testParam(123,np1:10);
  testParam(123,np2:20);
  testParam(123,np1:10,np2:20);
}  
testParam(p1,{np1, np2}) { 
  print("Param Value Is : ${p1}");
  print("Named Param 1 Valus Is : ${np1}"); 
  print("Named Param 1 Valus Is : ${np2}"); 
}

默认参数值

functionName(param1,param2= default_value) {}

Dart对象

对象

class Point {
  double? x; // Declare instance variable x, initially null.
  double? y; // Declare y, initially null.
}

void main() {
  var point = Point();
  point.x = 4; // Use the setter method for x.
  assert(point.x == 4); // Use the getter method for x.
  assert(point.y == null); // Values default to null.
}

构造函数

声明一个与类名一样的函数即是一个构造函数

  Point(this.x, this.y);

声明式构造函数

可以为一个类声明多个命名式构造函数来表达更明确的意图

 Point.origin()
      : x = xOrigin,
        y = yOrigin;

枚举

枚举类型是一种特殊的类型,也称为 enumerations 或 enums,用于定义一些固定数量的常量值。

enum Color { red, green, blue }

使用

Color.red

异常

Dart 代码可以抛出和捕获异常。异常表示一些未知的错误情况,如果异常没有捕获则会被抛出从而导致抛出异常的代码终止执行。

与 Java 不同的是,Dart 的所有异常都是非必检异常,方法不必声明会抛出哪些异常,并且你也不必捕获任何异常。

try {
  breedMoreLlamas();
} on OutOfLlamasException {
  buyMoreLlamas();
} on Exception catch (e) {
  print('Unknown exception: $e');
} catch (e) {
  print('Something really unknown: $e');
} finally {
  cleanLlamaStalls();
}

如上述代码所示可以使用 on 或 catch 来捕获异常,使用 on 来指定异常类型,使用 catch 来捕获异常对象,两者可同时使用。

无论是否抛出异常,finally 语句始终执行,如果没有指定 catch 语句来捕获异常,则异常会在执行完 finally 语句后抛出

抽象类

使用关键字 abstract 标识类可以让该类成为 抽象类,抽象类将无法被实例化。抽象类常用于声明接口方法、有时也会有具体的方法实现。如果想让抽象类同时可被实例化,可以为其定义 工厂构造函数。

抽象类常常会包含 抽象方法。下面是一个声明具有抽象方法的抽象类示例:

abstract class AbstractContainer {
  void updateChildren(); // Abstract method.
}

隐式接口

每一个类都隐式地定义了一个接口并实现了该接口,这个接口包含所有这个类的实例成员以及这个类所实现的其它接口。如果想要创建一个 A 类支持调用 B 类的 API 且不想继承 B 类,则可以实现 B 类的接口。

一个类可以通过关键字 implements 来实现一个或多个接口并实现每个接口定义的 API:

class Person {
  final String _name;

  Person(this._name);
  
  String greet(String who) => 'Hello, $who. I am $_name.';
}

class Impostor implements Person {
  String get _name => '';

  String greet(String who) => 'Hi $who. Do you know who I am?';
}

String greetBob(Person person) => person.greet('Bob');

void main() {
  print(greetBob(Person('Kathy')));
  print(greetBob(Impostor()));
}

如果需要实现多个类接口,可以使用逗号分割每个接口类:

class Point implements Comparable, Location {...}

扩展一个类

使用 extends 关键字来创建一个子类,并可使用 super 关键字引用一个父类:

class Television {
  void turnOn() {
    _illuminateDisplay();
    _activateIrSensor();
  }
}

class SmartTelevision extends Television {
  void turnOn() {
    super.turnOn();
    _bootNetworkInterface();
    _initializeMemory();
    _upgradeApps();
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_jiaaang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值