美文网首页
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