如果你在用flutter,千萬要記得這幾個小技巧,非常實用

yilian發表於2019-12-18

使用Dart開發Flutter應用,和Java非常類似,因此對Dart語言特性和Flutter Framework積累足夠的話,便可以寫出更高效和程式碼。

分享幾個實用的小技巧,本文參考了  FlutterDartTips ,去除了一些很常見的寫法。

釋出模式判斷

判斷當前環境是否為釋出模式。

const bool kReleaseMode = bool.fromEnvironment('dart.vm.product')

也可以使用 foundation 提供的常量,實現相同:

import 'package:flutter/foundation.dart';print('Is Release Mode: $kReleaseMode');

使用這個可以用於控制日誌輸出,比如release模式關閉日誌:

if (isProduction) {
  debugPrint = (String message, {int wrapWidth}) => {};}

詳情=》 https://api.flutter.dev/flutter/foundation/kReleaseMode-constant.html

為Container設定背景圖

都知道 Container 支援child設定展示內容,為了展示層疊效果,可以使用Column,其實還可以使用decoration間接實現背景圖

Container(
  width: double.maxFinite,
  height: double.maxFinite,
  decoration: BoxDecoration(
    image: DecorationImage(
      image: NetworkImage('),
    ),
  ),
  child: Center(
    child: Text(
      'Flutter.dev',
      style: TextStyle(color: Colors.red),
    ),
  ),),

斷言提示

使用asert進行斷言,透過第二個引數,提供個性化文案,可以讓使用者對斷言要求有一個更清楚的說明

assert(age > 18, "age should be >18");

“鏈式”呼叫

利用Dart語法,可以簡化方法呼叫

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 belowtitle ??= "Title";// instead ofif (title == null) {
  title = "Title";}

最後

上面的小技巧可以收藏記下

更多內容可以看:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2669319/,如需轉載,請註明出處,否則將追究法律責任。

相關文章