若是你在用flutter,千萬要記得這幾個小技巧,很是實用

使用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設置背景圖

都知道 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";
}

##最後

上面的小技巧能夠收藏記下,關注我會分享更多

相關文章
相關標籤/搜索