0%

Dart学习笔记 (九)

Dart中的库 , 自定义库 , 系统库 , 第三方库 , 库的重命名 , 部分导入 , 延迟加载 , 异步 async和await

Dart中的库

  • 在Dart中库的使用主要通过import关键词引入

  • library指令可以创建一个库,每个Dart文件都是一个库,即使没有使用library指令来指定

  • Dart中的库主要有三种:

    • 自定义库: import ‘lib/xxx.dart’; (例:抽离自定义类和调用)

    • 系统内置库: import ‘dart:math’; , import ‘dart:io’; , import ‘dart:convert’;

      例1:系统内置库

      1
      2
      3
      4
      5
      6
      import 'dart:math';          //引入Dart内置的库,dart:math是方法库,按Ctrl键点击可进入库的使用详情文件
      main(){
      print(min(12,23)); //调用math库中的方法,求两个数的最小数 输出: 12
      print(max(12,50)); //调用math库中的方法,求两个数的最大数 输出: 50
      }
      //dart:io dart:convert 是请求api接口常用的库
    • Pub包管理系统中的库: https://pub.dev/packages , https://pub.flutter-io.cn/packages , https://pub.dartlang.org/flutter/

    • Pub包使用时首先应先在项目根目录新建pubspec.yaml文件,内容容下:

      1
      2
      3
      4
      5
      name: Run                                         //名称,可以随意起
      description: A simple command-line application. //项目描述
      dependencies:
      dart_console: ^0.6.0 //吧想要依赖的包的安装码输入
      //举例的安装码在这里查看:https://pub.dev/packages/dart_console#-installing-tab-
    • 然后在cmd中使用cd指令cd到你的项目文件夹中,执行pub get指令进行下载安装想要的库 ,在Vscode中保存pubspec.yaml文件夹,就会自动执行pub get指令

    • 最后在项目中引用该库

      1
      2
      import 'package:dart_console/dart_console.dart';
      //该库使用文档位置:https://pub.dev/packages/dart_console#-example-tab-

库的重命名

  • 冲突解决: 当引入的两个库中有相同的名称标识符的时候,如果是java通常我们通过协商完整的包名路径来指定是用哪个

    例1:如果两个库的名称一个是Person1,一个是Person2,而库的内容的类的名称都是Person类,这样如果我们同时引入这两个库的时候在实例化的时候就会报错,因为两个库都有同名称的Person类,语言不知道该实例化哪个,这时可使用 as 关键词对其中一个进行重命名

    1
    2
    3
    4
    5
    6
    //使用as关键词给Person2重命名
    import 'lib/Person1.dart';
    import 'lib/Person2.dart' as lib;
    //实例化时调用lib.Person即可,等于Person2库内的所有重名的类都可以在前面添加lib来重命名
    Person p1=Person(); //Person1库中的Person类
    lib.Person p2=lib.Person(); //Person2库中的Person类

部分导入

  • 如果只需要导入库的一部分,有两种方法:

    • 1.只导入需要的部分,使用show关键词 例如:

      1
      import 'package:lib1/lib1.dart' show foo;   //仅导入foo方法
    • 2.隐藏不需要的部分,使用hide关键词 例如:

      1
      import 'package:lib2/lib2.dart' hide foo;   //仅隐藏foo方法

延迟加载

  • 延迟加载也称为懒加载,可以在需要的时候再进行加载

  • 懒加载最大的好处是可以减少APP的启动时间

  • 懒加载使用 deferred as 关键词来指定 例如:

    1
    import 'package:deferred/hello.dart' deferred as hello;
  • 当需要使用时,需要使用 loadLibrary() 方法来加载 例如:

    1
    2
    3
    4
    greet()async{
    await hello.loadLibrary();
    hello.printGreeting();
    }

异步 async和await

  • 只有async方法才能使用await关键词调用方法

  • 如果调用别的async方法必须使用await关键词

  • async是让方法变成异步,await是等待异步方法执行完成

    例1:async和await的使用

    1
    2
    3
    4
    5
    6
    7
    main()async{                            //异步方法
    var result=await testAsync(); //异步方法需要在异步方法中被await关键词调用
    print(result);
    }
    testAsync()async{ //异步方法
    return '这是一个async方法,需要await关键词调用';
    } //输出: 这是一个async方法,需要await关键词调用

妈耶终于结束了…下一步 进军Flutter

-------------本文有底学海无涯-------------