flutter 文件和库引用导出(import,import as,import show,part,part of,library)

import

* 引入dart语言的内置库
import 'dart:math';


* 引入pub包管理器提供库,在引用包管理器提供的库时,uri中以package开头
import 'package:flutter/material.dart';


* 引入本地文件
import './tools/network.dart';

import as

指定库的别名

import 'package:socket_io_client/socket_io_client.dart' as IO;

class MySocketIO {
  IO.Socket mySocket;
  MySocketIO(this.mySocket);
}

import show / hide

只引入库的部分内容

如果只想引入库的部分内容,可以使用如下语法:

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

如果想屏蔽库中的某些内容,不引入这部分:

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

part,library, part of

如果将所有的类或者方法都放在一个文件中,会导致这个文件十分庞杂,不利于后续维护。为了解决这个问题,我们可以使用partlibrarypart of来组织我们的代码。

假设我们的存放公共类和方法的文件为为global.dart,其内容可按如下方法组织:

//  定义库的名字
library global;

//  文件中引用的公共包
import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:i_chat/tools/utils.dart';
import 'package:shared_preferences/shared_preferences.dart';
import './tools/network.dart';
import 'package:dio/dio.dart';
import 'dart:math';
import 'package:provider/provider.dart';
import 'package:socket_io_client/socket_io_client.dart' as IO;

//  组成这个库的其他文件
part './model/User.dart';
part './model/FriendInfo.dart';
part './model/Message.dart';

//  ...其他业务代码
  • 开头使用library标识符定义库的名字
  • part标识符指明组成这个库的其他文件,part部分一定要在import部分的后面。

子文件的组织方式如下,以./model/FriendInfo.dart为例:

//  指明与其关联的父库
part of global;

//  定义其他内容
class FriendInfo {
    ...
}
  • 使用part of标识符,后跟父库的名字,来指明从属关系

  • 注意子文件中不需要引入父库中已经引入的依赖。

在写其他业务逻辑代码的时候只需要直接引入global.dart文件即可:

import './global.dart';

deferred as

延迟加载或者异步加载

延迟加载一个库时,要使用deferred as来进行导入:

import 'package:greetings/hello.dart' deferred as hello;

在使用时,需要通用调用loadLibrary()来加载对应的内容

Future greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}
  • 注意多次调用loadLibrary()来加载一个库,但是这个库也只会被加载一次。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×