美文网首页
dart规范

dart规范

作者: koreadragon | 来源:发表于2024-06-29 12:51 被阅读0次

    1. Flutter,dart介绍。

    1.dartpad介绍。

    2.命名规范

    1.大驼峰:类, 枚举, 类型定义, 以及泛型,都需要使用大写开头的驼峰命名法

    class HttpRequest { ... }

    typedef Predicate<T> = bool Function(T value);

    2.变量名、方法、参数名都应该是小写开头的驼峰命名法
    HttpRequest httpRequest;

    void align(bool clearItems) {}

    const defaultTimeout = 1000;

    final urlScheme = RegExp('^([a-z]+):');

    3.命名库、包、目录、dart文件都应该是小写加上下划线
    library peg_parser/source_scanner;
    import 'file_system.dart';
    将引用使用as转换的名字也应该是小写下划线

    import 'dart:math' as math;
    import 'package:angular_components/angular_components'
    as angular_components;
    import 'package:js/js.dart' as js;

    import 'dart:math' as Math;
    import 'package:angular_components/angular_components'
    as angularComponents;
    import 'package:js/js.dart' as JS;
    4/内部类、方法、参数使用_开头
    class _MyHomePageState extends State<MyHomePage> {
    int _counter = 0;

    void _incrementCounter() {
    setState(() {
    _counter++;
    });
    }
    }

    不推荐如下写法:,可能由于某些历史原因,但是现在最新的不推荐了
    const PI = 3.14;
    const DefaultTimeout = 1000;
    final URL_SCHEME = RegExp('^([a-z]+):');

    class Dice {
    static final NUMBER_GENERATOR = Random();
    }

    3.所有流控制结构,请使用大括号,这样做可以避免悬浮的else问题

    例外::
    一个if语句没有else子句,其中整个if语句和then主体都适合一行。在这种情况下,如果你喜欢的话,你可以去掉大括号
    if (arg == null) return defaultValue;
    但是,如果流程体超出了一行需要分划请使用大括号:
    if (overflowChars != other.overflowChars) {
    return overflowChars < other.overflowChars;
    }
    不推荐如下写法:
    if (overflowChars != other.overflowChars)
    return overflowChars < other.overflowChars;

    4.运算符及一些语法糖

    条件表达式??
    exp1 ?? exp2
    如果exp1不为空,则使用exp1,否则使用exp2
    在dart中 ?? 操作符表示当一个值为空时会给它赋值 ?? 后面的数据
    if (optionalThing?.isEnabled) {
    print(“Have enabled thing.”);
    }
    当 optionalThing 为空的时候,上面就会有空指针异常了。
    这里说明一下。 ?. 操作符相当于做了一次判空操作,只有当 optionalThing 不为空的时候才会调用 isEnabled 参数,当 optionalThing 为空的话默认返回null,用在if判断句中自然就不行了
    // 如果为空的时候你想返回false的话:
    optionalThing?.isEnabled ?? false;

    // 如果为空的时候你想返回ture的话:
    optionalThing?.isEnabled ?? true;

    对象操作符 ?.
    如果对象为空,则不调用方法,反之则调用,用于避免空指针

    对象操作符is 和 is!

    级联操作符…
    类似builder模式,意思是给当前对象的属性赋值,然后返回当前对象,可以多次使用该操作符来实现属性赋值和方法调用
    Person()
    ..name = "Tom"
    ..age = 20
    ..work();
    数组中的值拆分,使用...

    5..初始化相关

    使用 = 给参数设置默认值
    void insert(Object item, {int at = 0}) { … }
    //早起写法,不推荐
    void insert(Object item, {int at: 0}) { … }
    DON’T: 不要写没必要的getter 和 setter
    class Box {
    var contents;
    //默认自带settter,getter
    }
    class Box {
    var _contents;
    get contents => _contents;
    set contents(value) {
    除非想要notif()之类的
    _contents = value;
    }
    }
    构造函数,尽可能使用简单的初始化形式
    class Point {
    num x, y;
    Point(num x, num y) {
    this.x = x;
    this.y = y;
    }
    }
    推荐
    class Point {
    num x, y;
    Point(this.x, this.y);
    }

    相关文章

      网友评论

          本文标题:dart规范

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