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关键字的主要内容,如果未能解决你的问题,请参考以下文章