您好,登錄后才能下訂單哦!
本篇內容主要講解“Android開發Dart語言的特點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Android開發Dart語言的特點有哪些”吧!
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 抽象類(無法實例化的類)。抽象類對于定義接口非常有用,通常帶有一些實現。
// This class is declared abstract and thus // can't be instantiated. abstract class AbstractContainer { // Define constructors, fields, methods... void updateChildren(); // Abstract method. }
在實現不總是創建類的新實例的構造函數時使用 factory 關鍵字。
class Logger { String name; Logger(this.name); factory Logger.fromJson(Map<String, Object> json) { return Logger(json['name'].toString()); } }
使用命名構造函數為一個類實現多個構造函數或者提供額外的清晰度:
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; }
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(); }
類型別名ー是指代類型的一種簡明方式。通常用于創建在項目中經常使用的自定義類型。
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.
在 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); }
當您想要啟動一個 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語言的特點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。