flutter 注意点

2019-05-23  本文已影响0人  半截铅笔

1.import 问题

import 'package:flutter_app/a/b.dart';
import 'pb.dart';

注: 上面两种引用方式是有区别的, 两种方式想要导入的是同一个文件, 但是却对应着两个库.推荐使用第一种.

2.布局思考

3.常用Widget

4.懒加载

懒加载使用deferred as关键字来指定

import 'package:deferred/hello.dart' deferred as hello;

greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}

5.部分导入

只导入需要的部分,使用show关键字

import 'package:lib1/lib1.dart' show foo;

隐藏不需要的部分,使用hide关键字

import 'package:lib2/lib2.dart' hide foo;

6.冲突解决

使用as关键字来指定库的前缀

import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
// ...
Element element1 = new Element();           // Uses Element from lib1.
lib2.Element element2 = new lib2.Element(); // Uses Element from lib2

7.不确定类型

使用特殊的dynamic来表示当前的类型

8.库的拆分

Dart允许我们把一个库拆分成一个或者多个较小的part组件。或者我们想让某一些库共享它们的私有对象的时候,我们需要使用part.

part of 'xxxx.dart';
part 'xxxx.g.dart';

9.赋值

使用特殊的??=来表示进行赋值,最常用的是在写单例的时候.如果 _instance 为null , 则进行赋值, 否则 _instance 保持不变~

  static DartBridge _getInstance() {
    _instance??= DartBridge._internal();
    return _instance;
  }

10.级联操作符

使用特殊的..来表示进行赋值

var button = querySelector('#button');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
querySelector('#button') // Get an object.
  ..text = 'Confirm'   // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));

11.混入

使用特殊的 with 来表示进行赋值
概念和 extends, implement相似.
extends 可以 选择 复写 父类的方法,
implement 可以实现任意一个类, 但是 需要 复写 所有方法.
with 类似于 extends , 但是 其使用场景是 一个类 已经有父类的情况, 这个时候 通过with,可以再添加一个父类(可以这么想).以此来缓和 Dart 单继承特性的问题.

class A {
  void setA() {}

  void setACopy() {}
}

class B {
  void setB() {}
}

class D extends A with B {
  @override
  void setA() {
    // TODO: implement setA
    super.setA();
  }

  @override
  void setB() {
    // TODO: implement setB
    super.setB();
  }
}

上一篇下一篇

猜你喜欢

热点阅读