美文网首页
flutter 注意点

flutter 注意点

作者: 半截铅笔 | 来源:发表于2019-05-23 17:28 被阅读0次

1.import 问题

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

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

2.布局思考

  • 找出行和列.
  • 布局包含网格吗?
  • 有重叠的元素吗?
  • 是否需要选项卡?
  • 注意需要对齐、填充和边框的区域.

3.常用Widget

  • Text:该 widget 可让创建一个带格式的文本。

  • RowColumn: 这些具有弹性空间的布局类Widget可让您在水平(Row)和垂直(Column)方向上创建灵活的布局。其设计是基于web开发中的Flexbox布局模型。

  • Stack: 取代线性布局 (译者语:和Android中的LinearLayout相似),Stack允许子 widget 堆叠, 你可以使用 Positioned 来定位他们相对于Stack的上下左右四条边的位置。Stacks是基于Web开发中的绝度定位(absolute positioning )布局模型设计的。

  • ContainerContainer 可让您创建矩形视觉元素。container 可以装饰为一个BoxDecoration, 如 background、一个边框、或者一个阴影。 Container 也可以具有边距(margins)、填充(padding)和应用于其大小的约束(constraints)。另外, Container可以使用矩阵在三维空间中对其进行变换。

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();
  }
}

相关文章

网友评论

      本文标题:flutter 注意点

      本文链接:https://www.haomeiwen.com/subject/ccydzqtx.html