2026/4/4 0:56:19
网站建设
项目流程
建好网站是不是每年都要交钱,怎样做推广更有效,可以免费做网站推广的平台,公司网站模板怎么做序言
上篇文章中的注解知识涉及到了import ‘package:meta/meta_meta.dart’; 其实还是比较好理解的#xff0c;在java中import 之后的是class的路径#xff0c;比如 import ’com.csdn.dart.DemoMain‘,#xff1b; 这篇文章我们就来系统了解dart中的库#xff0c;和如何…序言上篇文章中的注解知识涉及到了import ‘package:meta/meta_meta.dart’;其实还是比较好理解的在java中import 之后的是class的路径比如 import ’com.csdn.dart.DemoMain‘,这篇文章我们就来系统了解dart中的库和如何使用库官方文档The import and library directives can help you create a modular and shareable code base. Libraries not only provide APIs, but are a unit of privacy: identifiers that start with an underscore (_) are visible only inside the library. Every Dart file (plus its parts) is a library, even if it doesn’t use a library directive.import和library指令可以帮助你创建模块化和可共享的代码库。库不仅提供api还是隐私的单位以下划线_开头的标识符只在库内部可见。每个Dart文件加上它的各个部分都是一个库即使它不使用库指令。Libraries can be distributed using packages.库可以使用packages分发这里的packages指的是dart官方提供的library管理工具如何使用packageDart uses underscores instead of access modifier keywords like public, protected, or private. While access modifier keywords from other languages provide more fine-grained control, Dart’s use of underscores and library-based privacy provides a straightforward configuration mechanism, helps enable an efficient implementation of dynamic access, and improves tree shaking (dead code elimination).Dart使用下划线而不是访问修饰符关键字如public、protected或private。其他语言中的访问修饰符关键字提供了更细粒度的控制而Dart使用下划线和基于库的隐私提供了直接的配置机制有助于高效实现动态访问并改进了树抖动死代码消除。Using librariesUse import to specify how a namespace from one library is used in the scope of another library.使用import来指定如何在另一个库的作用域中使用来自一个库的命名空间。例如Dart web应用程序通常使用Dart:js_interop库它们可以像这样导入importdart:js_interop;导入时唯一需要的参数是指定库的URI。对于内置库URI具有特殊的dart: scheme。对于其他库您可以使用文件系统路径或package: scheme。package: scheme指定了包管理器如pub工具提供的库。importpackage:test/test.dart;Specifying a library prefix指定库的前缀如果导入两个具有冲突标识符的库则可以为其中一个或两个库指定前缀。当你导入的多个库中使用了相同的类名时可以为库起个别名使用 别名.类名 明确指定所引用的类。importpackage:lib1/lib1.dart;importpackage:lib2/lib2.dartaslib2;// Uses Element from lib1.Element element1Element();// Uses Element from lib2.lib2.Element element2lib2.Element();Import prefixes with the wildcard name _ are non-binding, but will provide access to the non-private extensions in that library.带有通配符_的导入前缀是不绑定的但可以访问该库中的非私有扩展。举个例子// string_extensions.dartextensionStringExtensionsonString{Stringgetreversedsplit().reversed.join();// 私有扩展方法外部不可用String_privateMethod()this;}// main.dartimportstring_extensions.dartas_;// 非绑定导入voidmain(){String texthello;// 可以直接使用扩展方法虽然库没有绑定名称print(text.reversed);// 输出: olleh// ❌ 不能这样调用因为没有绑定名称// print(_.StringExtensions(text).reversed);// ❌ 私有方法不可用// print(text._privateMethod());}Importing only part of a libraryIf you want to use only part of a library, you can selectively import the library如果只想使用库的一部分则可以有选择地导入库// Import only foo.importpackage:lib1/lib1.dartshowfoo;// Import all names EXCEPT foo.importpackage:lib2/lib2.darthidefoo;Lazily loading a library延迟加载允许Web应用程序在需要库时按需加载库。当您想满足以下一项或多项需求时请使用延迟加载。减少Web应用程序的初始启动时间。执行A/B测试-例如尝试算法的替代实现。加载很少使用的功能例如可选屏幕和对话框。这并不意味着Dart在开始时加载所有延迟组件。Web应用程序可以在需要时通过Web下载延迟组件。dart工具不支持Web以外的目标的延迟加载。如果您正在构建Flutter应用程序请在关于延迟组件的Flutter指南中查阅其延迟加载的实现。要延迟加载一个库首先使用deferred as导入它。需要库时使用库的标识符调用loadLibrary。您可以在库上多次调用loadLibrary而不会出现问题。该库只加载一次。案例如下importpackage:greetings/hello.dartdeferredashello;Futurevoidgreet()async{awaithello.loadLibrary();hello.printGreeting();}The library directive要指定库级别的文档注释或元数据注释请将它们附加到文件开头的库声明中。下面时官方文档中的例子/// A really great test library.TestOn(browser)library;你可能看不太懂但没关系。下面是我们之前导入过的’dart:js_interop’的代码所以在dart中///就是文档注释所以文档注释和注释都放在library指令之前。Implementing librariesSee 创建 package中文 for advice on how to implement a package, including:How to organize library source code.How to use the export directive.When to use the part directive.How to use conditional imports and exports to implement a library that supports multiple platforms.如何创建这篇文章就不深入了有兴趣的同学点击链接自行学习吧。