亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android開發Dart語言的特點有哪些

發布時間:2022-05-16 15:53:46 來源:億速云 閱讀:161 作者:iii 欄目:開發技術

本篇內容主要講解“Android開發Dart語言的特點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Android開發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語言的特點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

拜泉县| 泰安市| 凌源市| 玛曲县| 扎赉特旗| 西昌市| 富宁县| 蓬安县| 福鼎市| 诏安县| 二手房| 长顺县| 宜州市| 莱西市| 简阳市| 东城区| 连城县| 清镇市| 兴安盟| 肇庆市| 南郑县| 清原| 句容市| 绵竹市| 乌鲁木齐县| 日照市| 吉首市| 蒲江县| 溆浦县| 内黄县| 平顺县| 页游| 安顺市| 闽侯县| 玛纳斯县| 新竹市| 凭祥市| 喀喇沁旗| 龙里县| 翼城县| 涟源市|