使用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"; }
##最后
上面的小技巧能够收藏记下,关注我会分享更多