首页 > 其他分享 >一统天下 flutter - dart: 概述

一统天下 flutter - dart: 概述

时间:2023-03-22 09:33:38浏览次数:50  
标签:const String int dart 一统天下 var flutter

一统天下 flutter https://github.com/webabcd/flutter_demo
作者 webabcd

一统天下 flutter - dart: 概述

示例如下:

lib\dart\summary.dart

/*
 * dart 概述
 *
 * 注:
 * 1、在 dart 中一切都是对象,除了 null 外都继承自 Object
 * 2、_ 开头代表 private,否则为 public
 * 3、类用 UpperCamelCase 规范命名,变量名、函数名、参数名等用 lowerCamelCase 规范命名
 * 4、目录名、文件名以及导入时定义的前缀建议用 snake_case 规范命名(避免不同文件系统是否区分大小写的问题),比如 import 'aaa_bbb_ccc.dart' as xxx_yyy_zzz;
 */

import 'package:flutter/material.dart';
import 'package:flutter_demo/helper.dart';

class DartSummary extends StatelessWidget {
  const DartSummary({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {

    // 单行注释

    /*
      多行注释
     */

    /*
    /*
      多行注释支持嵌套
     */
     */

    /// 用于生成文档的注释
    /**
     * 用于生成文档的注释
     */

    // 声明变量,final,const
    sample1();
    // 变量初始化,late,?
    sample2();
    // 类型别名
    sample3();
    // 几个最佳实践
    sample4();

    return const MyWidget(text: "dart_summary");
  }

  void sample1() {
    // 声明指定类型的变量,并初始化
    // 字符串可以用双引号,也可以用单引号
    String a = 'a';

    // 通过 var 声明变量,然后根据初始化数据推导变量的类型(这是推荐的方式)
    var b = "b";

    // final 常量,允许被设置一次
    final String c;
    c = "c";        // 可以被设置一次
    // c = "cc";    // 会报错
    final d = "d";  // 声明的同时被设置了
    // d = "dd";    // 会报错

    // const 常量(编译时常量),在编译时就要确定,不可修改
    const e = "e";
    // const 也可以用来声明通过构造函数返回的对象(下面的 [1, 2, 3] 其实就是调用 List 构造函数返回的一个 List 对象)
    var f = const [1, 2, 3];
    // f[0] = 100;      // 这句会编译时报错的,因为 f 指向的对象是 const 的,其内容不可修改
    f = [4, 5, 6];      // 这句运行正常,因为 f 自己不是 const 的,所以可以让 f 指向别的数据

    const g = [1, 2, 3];
    // g[0] = 100;      // 这句会报错,你不能修改 const 常量引用的内容中的任何数据(因为在 dart 中 const 常量引用的内容也都会被自动标记为 const)
    // g = [4, 5, 6];   // 这句会报错,你不能让 const 常量引用别的数据

    var h = [1, 2, 3] == [1, 2, 3];             // false(即使数据相同,这两个对象也不是同一个对象)
    var i = const [1, 2, 3] == const [1, 2, 3]; // true(如果 const 的两个数据相同,则这两个对象是同一个对象)

    // 再看看 final 常量
    final j = [1, 2, 3];  // 声明的同时被设置了
    // j = [4, 5, 6];     // 会报错
    j[2] = 100;           // 这句是正常的(你虽然不能再让 final 常量引用别的数据,但是你可以修改 final 常量引用的内容中的数据)

    log("$a, $b, $c, $d, $e, $f, $g, $h, $i, $j");
  }

  void sample2() {
    // 声明变量的时候可以不初始化,但是使用前必须初始化(由编译器检查)
    String a;
    a = "a";

    // 声明变量的时候可以不初始化,但是使用前必须初始化(由编译器检查)
    // 但是有的时候编译器可能会判断失误,发生这种情况时可以加上 late 关键字,不让编译器检查
    late String b;
    b = "b";
    // late 关键字还可以用于延迟加载
    late String c = _lateDemo();          // 因为 late 关键字的原因,这里不会调用 _lateDemo() 方法
    log("late String c = _lateDemo();");
    log(c);                               // 当你使用 c 时,才会调用 _lateDemo() 方法

    // 通过 ? 可以声明可空类型(即允许不初始化),默认值为 null
    String? d;
    int? e;

    log("$a, $b, ${ d == null }, ${ e == null }");
  }
  String _lateDemo() {
    log("invoke _lateDemo");
    return "return _lateDemo";
  }

  void sample3() {
    MyInt a = 1;
    // MyInt 实际上就是 int
    var b = a.runtimeType.toString(); // int

    int plus(int a, int b) => a + b;
    // plus() 函数的类型是 int Function(int a, int b),也就是说 plus() 函数的类型是 MyFunc
    var c = plus is MyFunc;           // true

    log("$a, $b, $c");
  }

  void sample4() {
    String? a; // 默认就是 null,不建议写成 String? a = null;
    var b = 'a' // 拼接多个字符串时建议不用使用 + 号
        'b';
    var c = "hello: $b"; // 格式化字符串时尽量用 $ 而不是用 + 号拼接
    var d = [1, 2, 3].isEmpty; // 判断一个可迭代对象是否为空建议用 isEmpty 属性而不要使用 length 属性(可能会比较慢)
    var e = [
      1,
      2,
      3,  // 定义 List, Set, Map 中的元素时,建议结尾的元素后面也加上逗号,这样会方便你的各种修改
    ];
  }
}

// 为某个类指定类型别名
typedef MyInt = int;
// 为某个函数类型指定类型别名
typedef MyFunc = int Function(int a, int b);

一统天下 flutter https://github.com/webabcd/flutter_demo
作者 webabcd

标签:const,String,int,dart,一统天下,var,flutter
From: https://www.cnblogs.com/webabcd/p/flutter_lib_dart_summary.html

相关文章

  • 一统天下 flutter - dart: 数据类型(num, int, double, bool, String, List, Set, Map,
    一统天下flutterhttps://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-dart:数据类型(num,int,double,bool,String,List,Set,Map,Object......
  • 解决Flutter出现Warning: Mapping new ns http://schemas.android.com/repository/and
    出现的问题:  解决办法:1、首先找到这两个文件,图中箭头位置。 2、在gradle-wrapper.properties配置文件中添加distributionUrl=https\://services.gradle.org/distribution......
  • Flutter获取全局context
    参考:http://events.jianshu.io/p/1c30ef3111b2 1创建一个全局的GlobalKeyclassGlobal{staticGlobalKey<NavigatorState>navigatorKey=GlobalKey();......
  • Flutter Plugin简单开发
    个人博客:http://www.milovetingting.cn新建项目项目结构创建完成后的目录如图所示,其中example是测试工程,用来测试我们写的插件。lib目录下的文件,就是需要具体实......
  • dart学习笔记
    一、库1、import'dart:xxx';   引入Dart标准库2、import'xxx/xxx.dart';   引入绝对路径的Dart文件3、import'package:xxx/xxx.dart';     引入Pu......
  • flutter项目运行时一直卡在Running Gradle task 'assembleDebug'... & Could not reso
    先是看了别人的文章  Flutter项目启动一直卡在RunningGradletask‘assembleDebug‘问题解决-灰信网(软件开发博客聚合)(freesion.com),做了同样的处理,但接着又报错......
  • Dart中的Future
    Future简介Future提供了一种异步编程的方式,它可以让我们在不阻塞当前任务的情况下执行一个任务,并在任务完成后获得相应的结果。使用Future的步骤1.创建一个Future对象;2.......
  • Dart 方法
    同一作用域中,不允许重复定义名称一样的方法//不规定是否有返回值,dart编译时自动识别fun_1(){print('hi');}fun_2(){return'hi';}//胖箭头函数必有返回值,若表达......
  • Dart 枚举
    枚举最基本的使用enumCOLOR{RED,BLUE,YELLOW,GREEN,BLACK,GRAY,PINK,WHITE;}复杂点的枚举enumColor{WHITE(0xF8F8FF),PINK(0xFFC0CB),BLUE(0x0000FF......
  • Dart 异常
    异常抛出异常抛出异常的方式有3种fun()=>throw"error";//胖箭头方法//普通方法fun(){throw"error";}//普通方法fun(){throwException("error");}......