面向Kotlin与Java开发者的Dart快速入门(十一)库与导入(import)

Dart入门教程 同时被 2 个专栏收录
15 篇文章 0 订阅
31 篇文章 1 订阅

在这里插入图片描述

Library的导入


import关键字导入Library

import 'dart:html';

Library的URI

通过URI导入一个Library

根据library的种类不同,URI前缀scheme不同:

  • Dart标准库… dart:xxx
  • 三方库(通过包管理器提供的库,如pub工具)… package:xxx
    • Flutter的Library中也有三方库
import 'package:test'
  • Native实现库… dart-ext: xxx

本地工程的源码还没有package化的,可添加相对路径源码依赖

import 'package:test/text.dart'

别名导入

与Kotlin的import相同

import "package:mylib/awesome_functions.dart" as awesome;

部分导入

当只想导入部分功能时

// Import only foo.
import 'package:lib1/lib1.dart' show foo;

// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;

懒加载库

库的懒加载(或者延迟加载),Java没有类似功能,可以类比Andoird中so的load。

懒加载适用于以下场景。

  • 减少应用程序的初始启动时间
  • 进行A/B测试时,可以根据需求加载不同的库
  • 加载某些使用频次低的功能,懒加载可以提高性能,例如对话框等

延迟加载需要使用deferred as关键字导入

import "package:rarely_used/lib.dart" deferred as rare;

当真正需要加在时,通过loadLibrary()加载,返回一个Future,所以必须使用await同步。

Future doSomething() async {
  await rare.loadLibrary();
  rare.awesomeFunction();
}

使用懒加载有几个注意事项:

  • 懒加载库中的const定义的常量,不能当常量使用,因为有可能还没有加载
  • 相同的理由,不要使用懒加载库中的Class进行任何操作。可以让懒加载库作为某些公共接口的实现,通过接口的依赖倒置避免对懒加载库中Class的直接依赖
  • deferred as (namespace) 中的namespace会被自动插入 Future loadLibrary()以作为执行加载的载体,所以注意避免在Library中出现同样签名的LoadLibrary()方法

Library的创建


创建一个Library供外部使用。

需要创建pubspec.yaml并进行若干配置。具体可以参考Create Library Packages,包括:

  • 库的代码组织
  • export指令的使用
  • part指令的使用
  • library指令的使用

Flutter工程中代码也是放在lib/文件夹中,所以也可以看作是是一个Dart的Library。



返回首页:Dart入门教程

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值