使用Dart開發Flutter應用,和Java很是相似,所以對Dart語言特性和Flutter Framework積累足夠的話,即可以寫出更高效和代碼。html
分享幾個實用的小技巧,本文參考了 FlutterDartTips ,去除了一些很常見的寫法。api
判斷當前環境是否爲發佈模式。ide
const bool kReleaseMode = bool.fromEnvironment('dart.vm.product')
也能夠使用 foundation 提供的常量,實現相同:this
import 'package:flutter/foundation.dart'; print('Is Release Mode: $kReleaseMode');
使用這個能夠用於控制日誌輸出,好比release模式關閉日誌:debug
if (isProduction) { debugPrint = (String message, {int wrapWidth}) => {}; }
詳情=》https://api.flutter.dev/flutter/foundation/kReleaseMode-constant.html日誌
都知道 Container 支持child設置展現內容,爲了展現層疊效果,能夠使用Column,其實還能夠使用decoration間接實現背景圖code
Container( width: double.maxFinite, height: double.maxFinite, decoration: BoxDecoration( image: DecorationImage( image: NetworkImage('https://bit.ly/2oqNqj9'), ), ), child: Center( child: Text( 'Flutter.dev', style: TextStyle(color: Colors.red), ), ), ),
使用asert進行斷言,經過第二個參數,提供個性化文案,能夠讓使用者對斷言要求有一個更清楚的說明htm
assert(age > 18, "age should be >18");
利用Dart語法,能夠簡化方法調用ip
class Person { String name; int age; Person(this.name, this.age); void data() => print("$name is $age years old."); } void main() { // Without Cascade Notation Person person = Person("Richard", 50); person.data(); person.age = 22; person.data(); person.name += " Parker"; person.data(); // Cascade Notation with Object of Person Person("Jian", 21) ..data() ..age = 22 ..data() ..name += " Yang" ..data(); }
比較常見的一個判斷,當一個變量爲空時進行賦值操做。開發
// User below title ??= "Title"; // instead of if (title == null) { title = "Title"; }
##最後
上面的小技巧能夠收藏記下,關注我會分享更多