Android开发中Dart语言7个很酷的特点

 更新时间:2022年05月17日 09:02:00   作者:会煮咖啡的猫  
这篇文章主要为大家介绍了Android开发中Dart语言7个很酷的特点分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

参考

https://dart.dev/guides/language/language-tour

正文

今天的文章简短地揭示了 Dart 语言所提供的很酷的特性。更多时候,这些选项对于简单的应用程序是不必要的,但是当你想要通过简单、清晰和简洁来改进你的代码时,这些选项是一个救命稻草。

考虑到这一点,我们走吧。

Cascade 级联

Cascades (.., ?..) 允许你对同一个对象进行一系列操作。这通常节省了创建临时变量的步骤,并允许您编写更多流畅的代码。

var paint = Paint();
paint.color = Colors.black;
paint.strokeCap = StrokeCap.round;
paint.strokeWidth = 5.0;
//above block of code when optimized
var paint = Paint()
  ..color = Colors.black
  ..strokeCap = StrokeCap.round
  ..strokeWidth = 5.0;

Abstract 抽象类

使用 abstract 修饰符定义一个 _abstract 抽象类(无法实例化的类)。抽象类对于定义接口非常有用,通常带有一些实现。

// This class is declared abstract and thus
// can't be instantiated.
abstract class AbstractContainer {
  // Define constructors, fields, methods...
  void updateChildren(); // Abstract method.
}

Factory constructors 工厂建造者

在实现不总是创建类的新实例的构造函数时使用 factory 关键字。

class Logger {
  String name;
  Logger(this.name);
  factory Logger.fromJson(Map<String, Object> json) {
    return Logger(json['name'].toString());
  }
}

Named 命名构造函数

使用命名构造函数为一个类实现多个构造函数或者提供额外的清晰度:

class Points {
  final double x;
  final double y;
  //unnamed constructor
  Points(this.x, this.y);
  // Named constructor
  Points.origin(double x,double y)
      : x = x,
        y = y;
  // Named constructor
  Points.destination(double x,double y)
      : x = x,
        y = y;
}

Mixins 混合物

Mixin 是在多个类层次结构中重用类代码的一种方法。

要实现 implement mixin,创建一个声明没有构造函数的类。除非您希望 mixin 可以作为常规类使用,否则请使用 mixin 关键字而不是类。

若要使用 mixin,请使用后跟一个或多个 mixin 名称的 with 关键字。

若要限制可以使用 mixin 的类型,请使用 on 关键字指定所需的超类。

class Musician {}
//creating a mixin
mixin Feedback {
  void boo() {
    print('boooing');
  }
  void clap() {
    print('clapping');
  }
}
//only classes that extend or implement the Musician class
//can use the mixin Song
mixin Song on Musician {
  void play() {
    print('-------playing------');
  }
  void stop() {
    print('....stopping.....');
  }
}
//To use a mixin, use the with keyword followed by one or more mixin names
class PerformSong extends Musician with Feedback, Song {
  //Because PerformSong extends Musician,
  //PerformSong can mix in Song
  void awesomeSong() {
    play();
    clap();
  }
  void badSong() {
    play();
    boo();
  }
}
void main() {
  PerformSong().awesomeSong();
  PerformSong().stop();
  PerformSong().badSong();
}

Typedefs

类型别名ー是指代类型的一种简明方式。通常用于创建在项目中经常使用的自定义类型。

typedef IntList = List<int>;
List<int> i1=[1,2,3]; // normal way.
IntList i2 = [1, 2, 3]; // Same thing but shorter and clearer.
//type alias can have type parameters
typedef ListMapper<X> = Map<X, List<X>>;
Map<String, List<String>> m1 = {}; // normal way.
ListMapper<String> m2 = {}; // Same thing but shorter and clearer.

Extension 扩展方法

在 Dart 2.7 中引入的扩展方法是一种向现有库和代码中添加功能的方法。

//extension to convert a string to a number
extension NumberParsing on String {
  int customParseInt() {
    return int.parse(this);
  }
  double customParseDouble() {
    return double.parse(this);
  }
}
void main() {
  //various ways to use the extension
  var d = '21'.customParseDouble();
  print(d);
  var i = NumberParsing('20').customParseInt();
  print(i);
}

可选的位置参数

通过将位置参数包装在方括号中,可以使位置参数成为可选参数。可选的位置参数在函数的参数列表中总是最后一个。除非您提供另一个默认值,否则它们的默认值为 null。

String joinWithCommas(int a, [int? b, int? c, int? d, int e = 100]) {
  var total = '$a';
  if (b != null) total = '$total,$b';
  if (c != null) total = '$total,$c';
  if (d != null) total = '$total,$d';
  total = '$total,$e';
  return total;
}
void main() {
  var result = joinWithCommas(1, 2);
  print(result);
}

unawaited_futures

当您想要启动一个 Future 时,建议的方法是使用 unawaited

否则你不加 async 就不会执行了

import 'dart:async';
Future doSomething() {
  return Future.delayed(Duration(seconds: 5));
}
void main() async {
  //the function is fired and awaited till completion
  await doSomething();
  // Explicitly-ignored
  //The function is fired and forgotten
  unawaited(doSomething());
}

以上就是Android开发Dart语言7个很酷的特点的详细内容,更多关于Android开发Dart特点的资料请关注程序员之家其它相关文章!

相关文章

  • Android开发中Dart语言7个很酷的特点

    Android开发中Dart语言7个很酷的特点

    这篇文章主要为大家介绍了Android开发中Dart语言7个很酷的特点分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Dart?异步编程生成器及自定义类型用法详解

    Dart?异步编程生成器及自定义类型用法详解

    这篇文章主要为大家介绍了Dart?异步编程生成器及自定义类型用法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Dart多态控制反转编码规范实例详解

    Dart多态控制反转编码规范实例详解

    这篇文章主要为大家介绍了Dart多态控制反转编码规范实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Flutter 语法进阶抽象类和接口本质区别详解

    Flutter 语法进阶抽象类和接口本质区别详解

    这篇文章主要为大家介绍了Flutter 语法进阶抽象类和接口本质区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • flutter中如何使用和扩展ThemeData实现详解

    flutter中如何使用和扩展ThemeData实现详解

    这篇文章主要为大家介绍了flutter中如何使用和扩展ThemeData实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Flutter学习笔记(三)RowColum布局

    Flutter学习笔记(三)RowColum布局

    这篇文章主要介绍了Flutter学习笔记(三)RowColum布局,通俗来说,就是横向布局和纵向布局的用法,需要的朋友可以参考下
    2023-04-04
  • Dart语法之变量声明与数据类型实例详解

    Dart语法之变量声明与数据类型实例详解

    这篇文章主要为大家介绍了Dart语法之变量声明与数据类型实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Dart多个future队列完成加入顺序关系及原子性论证

    Dart多个future队列完成加入顺序关系及原子性论证

    这篇文章主要介绍了Dart多个future队列完成加入顺序关系及原子性论证,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Dart?String字符串的常用方法总结概述

    Dart?String字符串的常用方法总结概述

    这篇文章主要为大家介绍了Dart?String字符串的常用方法概述,总结整理了大概4000多字,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 关于Dart中的异步编程

    关于Dart中的异步编程

    这篇文章主要介绍了关于Dart中的异步编程,dart 是强类型语言,但由于具备类型推导功能所以类型声明是可选的,需要的朋友可以参考下
    2023-04-04

最新评论

?


http://www.vxiaotou.com