Dart语法补充---external关键字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart语法补充---external关键字相关的知识,希望对你有一定的参考价值。

参考技术A

说道抽象类abstract,就不得不说一下external关键字,external关键字估计用到人很少,在看源码的时侯经常可以看到,如下:

external只声明方法,声明的方法需要由外部去实现 ,通常是由底层sdk根据不同平台(vm、web等)实现;若外部没实现,则会返回null;

external声明的方法,通过@patch注解实现 , 结构如上 ;
比如Object里各种external声明方法的 实现如下 :

移动端external声明方法实现在vm目录下:

web端external声明方法实现在js_runtime目录下:

external方法的实现文件一般命名为xxx_patch.dart,如在vm/lib目录下,可以看到各种xxx_patch.dart文件:

可以在终端通过grep搜索命令找到对应类里external方法实现的xxx_patch.dart文件:

以查找Object类里external方法的实现为例:
1、Object类定义如下:

可以看到Object类里有很多方法都是用external声明

2、在flutter sdk目录/bin/cache/dart-sdk/lib/_internal目录下,执行查找class Object命令:

由此可知:web端Object实现文件是./js_runtime/lib/core_patch.dart
移动端Object实现文件是./vm/lib/object_patch.dart

打开web端Object实现文件./js_runtime/lib/core_patch.dart,如下:

打开移动端Object实现文件./vm/lib/object_patch.dart,如下:

可以看到Object里各种external声明方法对应的@patch注解实现方法

以上是关于Dart语法补充---external关键字的主要内容,如果未能解决你的问题,请参考以下文章

Dart学习之基础语法

C++11老关键字的新含义(auto, using,extern)

Dart 基本语法

Dart与Java的语法区别

Flutter之Dart语法面向对象

Flutter之Dart语法面向对象