Flutter开发 插件使用必知必会

本文目的

  • 介绍插件的搜索方式,三方库评估的意义和基本思路
  • 介绍如何给应用添加插件,从源码角度看插件是如何注册生效的
  • 介绍如何给插件指定版本和解决版本冲突问题
  • 介绍依赖源的种类,如何从pub/git/本地指定依赖库
  • 介绍依赖的2种分类方式:直接依赖和传递依赖;常规依赖和dev依赖
  • 介绍pub这个包管理工具获取依赖的流程和 lockfile 文件的意义

目录结构

  • 获取插件
  • 插件的使用
  • 依赖的分类
  • 包管理
  • 总结

获取插件

这里的 Flutter 插件,不是 IDE 中的插件,而指的是包含平台特定代码的包,用以提供 Flutter 框架所不支持的一些 Native API 的功能。比如常用的 shared_preferences , path_provider 等。

Flutter 框架为我们提供了很多 UI 层的控制和支持,但 APP 的功能并不局限在显示上,还需要依赖 Native 平台的支持,比如文件系统,摄像头等硬件调用等。所以Flutter为我们提供了一个Platform Channel的机制,使得 Dart 代码可以与 Navtive 代码进行交互。基于Platform Channel,开发者可以编写自己需要的 Native 功能,在 Dart 代码中统一调用。

搜索途径

随着Flutter社区的成长和壮大,Flutter Plugin 的数量和质量也在不断提高。当你在开发自己的 App 时,如果遇到依赖 Native 的功能时,不妨先考虑去社区搜索是否有现成的轮子。推荐2个平台:

pub.dartlang

针对 dart 语言的三方库平台,可以选择 Flutter 类型进行搜索,更有针对性,每个库根据 Popularity ,Health, Maintenance 进行打分,是搜索的首选。首页还列出了十几个 Top Popular 的项目,比如 shared_preferences, url_launcher, path_provider,可以说是基础必备插件。

github

flutter plugin 为关键字搜索。相对 pub.dartlang,缺少针对性和评分体系(可以根据 issuestar 数进行评估,但相对来说没有那么直观),但库数量更多,更新更快(比如修复了 bug 不需要等它发布到 pub 上)。

不同平台的插件,依赖的写法也有不同,下文会说明。

引入前评估

搜索到自己所需功能的插件后,我们就直接拿来主义吗?对待开源三方库,我的倾向是先做多方对比,尝试阅读源码,做到心中有数后再引入。在我们团队,如果需要引入三方库,都必须提供一个说明文档,进行引入原因说明。

考量要点:

  • 根据 pub score 或者 github 的 issue,star,维护情况进行评估
  • 功能是否满足需求,API易用性如何
  • 引入后对包大小影响对比
  • 如果库比较简单,可以阅读源码,看它的实现方式是否科学规范
  • 看 native 功能是用什么语言实现,是否 match 团队的技术栈,比如我司就更偏好 Kotlin/Swift

如果你发现这个库部分满足了业务需求,你可以选择改进它,或者重新造轮子。如果你觉得库维护者比较勤快和靠谱,项目的底子也不错,可以尝试 Fork 这个项目,并给它提 PR

对编写插件感兴趣的童鞋可以看看这个姊妹篇:Flutter插件编写必知必会

插件的使用

添加依赖

  1. 打开项目下的pubspec.yaml文件,在 dependencies 下添加依赖名称和版本等信息

  2. 在命令行下运行flutter packages get,或者在 IDE 中 点击 Packages Get 等待它下载完成,并生成插件注册代码

    • Android:

      • android/app/scr/main/java/io/flutter/plugins目录下自动生成的GeneratedPluginRegistrant.java中,会添加插件的注册代码。
      public final class GeneratedPluginRegistrant { public static void registerWith(PluginRegistry registry) { if (alreadyRegisteredWith(registry)) { return; }
              UrlLauncherPlugin.registerWith(registry.registrarFor("io.flutter.plugins.urllauncher.UrlLauncherPlugin"));
              ...
          }
          ...
      } 复制代码
      • 在 App 的 MainActivity 创建时会去调用这个注册方法
      class MainActivity : FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)
              GeneratedPluginRegistrant.registerWith(this)
          }
      } 复制代码
    • iOS

      • ios/Runner目录下自动生成的GeneratedPluginRegistrant.m中,会添加插件的注册代码。
      #import "GeneratedPluginRegistrant.h"
      #import <url_launcher/UrlLauncherPlugin.h>
      
      @implementation GeneratedPluginRegistrant
      
      + (void)registerWithRegistry:(NSObject<FlutterPluginRegistry>*)registry {
      [FLTUrlLauncherPlugin registerWithRegistrar:[registry registrarForPlugin:@"FLTUrlLauncherPlugin"]];
      }
      
      @end 复制代码
      • AppDelegate.swift启动后去调用注册
      @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate, WXApiDelegate { override func application( _ application: UIApplication,
              didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
              ) -> Bool { GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions)
          }
      } 复制代码
  3. 在项目文件中 import 所需的包名,并使用

  4. 如果依赖中存在 platform-specific code (Java/Kotlin for Android, Swift/Objective-C for iOS),要确保代码能够编译进 App ,必须 Restart App,防止发生MissingPluginException异常。Hot reload 或者 Hot restart 只对 dart 代码有效。

版本约束

版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

  • 主版本号:当你做了不兼容的 API 修改,
  • 次版本号:当你做了向下兼容的功能性新增,
  • 修订号:当你做了向下兼容的问题修正。

更详细的参考语义化版本

基本用法:

any # 所有版本,等同于不写。对pub运行性能有影响,不推荐 1.2.3 # 明确的版本号 '>=1.2.3' # 还有 >1.2.3, <=1.2.3, <1.2.3 ^1.2.3 # Caret syntax 等同于 >=1.2.3 <2.0.0 复制代码

注意:如果在版本约束中使用了'>','<'字符,一定要加引号,否则无法被当作 YAML 的语法解析

版本冲突

如果项目依赖了 A , B 库,他们都依赖了一个 C ,但 C 的版本不同,可能会产生版本冲突。pub 会尝试找到符合所有依赖约束的版本号。如果找不到能匹配的版本,但 AB 库依赖 C 库的 API 是一样的,那么可以添加一个依赖覆盖来强制指定某一版本。

注:pub 是 Dart SDK 提供的一个包管理工具

dependencies:  some_package:  other_package: dependency_overrides:  url_launcher: '0.4.3' 复制代码

如果是 Android 平台的库依赖冲突,可以在 appgradle 文件中强制指定版本

configurations.all {
    resolutionStrategy {
        force 'com.google.guava:guava:23.0-android' }
} 复制代码

注意: iOS 平台下 CocoaPods 不支持强制版本覆盖

从不同的依赖源添加依赖

SDK

The SDK source is used for any SDKs that are shipped along with packages, which may themselves be dependencies. Currently, Flutter is the only SDK that is supported.

通俗讲,就是 Flutter SDK 自带的库。打开我们 Flutter 的安装地址,进入flutter/packages可以看到各种包,如flutter,flutter_driver,flutter_test等。

➜  packages git:(stable) ✗ ls
analysis_options.yaml         flutter_localizations
flutter                       flutter_test
flutter_driver                flutter_tools
flutter_goldens               fuchsia_remote_debug_protocol
flutter_goldens_client
➜  packages git:(stable) ✗ pwd
/Users/xxx/flutter/packages 复制代码

在 Flutter 项目中写过测试的同学对上面几个依赖应该不陌生

dependencies:  flutter:  sdk: flutter # 来源于flutter sdk dev_dependencies:  flutter_test:  sdk: flutter  flutter_driver:  sdk: flutter 复制代码

Hosted

A hosted package is one that can be downloaded from pub.dartlang.org (or another HTTP server that speaks the same API).

pub

dependencies:  transmogrify: ^1.4.0 复制代码

自己的服务器

dependencies:  transmogrify: ^1.4.0  transmogrify:  hosted:  name: transmogrify  url: http://your-package-server.com  version: ^1.4.0 复制代码

Git

dependencies:  kittens:  git: git://github.com/munificent/kittens.git 复制代码

指定分支

dependencies:  kittens:  url: git://github.com/munificent/kittens.git  ref: some-branch 复制代码

pub 默认包目录在 git 仓库的根目录,如果要指定在别的位置,可以用 path 参数

dependencies:  kittens:  git:  url: git://github.com/munificent/cats.git  path: path/to/kittens 复制代码

本地路径

特别适用在一个人同时开发项目和依赖库的情况。因为修改依赖库的代码,在项目中就可以即时生效,有利于调试和提高效率。

dependencies:  transmogrify:  path: /Users/me/transmogrify # 也可以相对路径,相对路径以 pubspec.yml 文件为基准 复制代码

依赖的分类

直接依赖和传递依赖

根据依赖与项目的关系,可以分为以下2类:

  • immediate dependency :项目中直接使用的依赖,即我们在 pubspec 中列出的依赖,包括 dependciesdev_dependencies
  • transitive dependency :直接依赖所需的依赖, pub 会根据 pubspec 中列出的依赖自动为我们获取。

举个例子

比如我们项目依赖 A ,而 A 又依赖 BB 又依赖 C 。那么 A 是我们项目的immediate dependency, BC 就是transitive dependency

我们可以在命令行中输入命令flutter packages pub deps,查看项目的依赖树。 比如我们在项目中引入了一个支持网络缓存的图片库cached_network_image: ^0.5.0+1

flutter packages pub deps
Dart SDK 2.1.0-dev.9.4.flutter-f9ebf21297
Flutter SDK 1.0.1-pre.2
your_app_name 2.2.0+10 # 项目名称和版本
|-- cached_network_image 0.5.1 # 直接依赖
|   |-- flutter... # 直接依赖(因为在项目pubspec中也添加了)
|   '-- flutter_cache_manager 0.2.0+1 # 传递依赖
|       |-- flutter...
|       |-- http...
|       |-- path_provider...
|       |-- shared_preferences...
|       |-- synchronized 1.5.3
|       '-- uuid 1.0.3
|           |-- convert...
|           '-- crypto...
... 复制代码

常规依赖和dev依赖

根据依赖的作用范围,可以分为:

  • dependencies :常规依赖
  • dev dependencies :开发时所需依赖。它和常规依赖的区别是,项目依赖库中的 dev dependencies ,对于你的项目来说是不可见的。

举个例子

项目的 pubspec.yml 如下。如果 A 有一个 dev_dependencies 依赖 dev_C ,项目最终的依赖是 A , dev_B;不包括 dev_C

dependencies:  A: dev_dependencies:  dev_B: 复制代码

适应场景:如果你需要 importlib 或者 bin 目录,那么选择 dependencies ; 如果你只需要 importtestexample 等,那么就选择 dev dependencies 。使用 dev dependencies 的好处是能让依赖树更小,从而使 pub 运行更快,能跟容易找到满足所有约束的包版本。

包管理

在获取一个新的依赖时,pub 会下载满足版本条件的最新版本,然后把版本信息添加到一个 lockfile 中。这个 lockfile 文件叫 pubspec.lock ,位于项目 pubspec.yml 的同级目录。它列出了项目的每个依赖(包括直接依赖和传递依赖)的版本信息。我们应该把这个 lockfile 添加到版本控制中,这样不论开发环境,生产环境都能确保使用了相同的依赖版本。

举个例子

项目的 pubspec.yml 文件包含如下依赖

... dependencies:  flutter:  sdk: flutter  cached_network_image: ^0.5.0+1 dev_dependencies:  flutter_test:  sdk: flutter ... 复制代码

结合上面提到知识,我们来看看 pubspec.lock 的内容。 lockfile 把所有依赖树打平,并根据首字母排序

cached_network_image:
    dependency: "direct main" # 直接依赖,常规依赖 description:
      name: cached_network_image
      url: "https://pub.flutter-io.cn" source: hosted
    version: "0.5.1" flutter: 
    dependency: "direct main" # 直接依赖,常规依赖 description: flutter source: sdk
    version: "0.0.0" flutter_test:
    dependency: "direct dev" # 直接依赖,开发依赖 description: flutter source: sdk
    version: "0.0.0" uuid:
    dependency: transitive # 传递依赖 description:
      name: uuid
      url: "https://pub.flutter-io.cn" source: hosted
    version: "1.0.3" ... 复制代码

如果非首次获取依赖,pub 会从 lockfile 中读取版本。如果想升级到满足 pubspec.yml 中约束的最新版本,可以执行 flutter packages upgrade 命令,升级后会更新 lockfile 中的版本。

总结

本文我们主要讨论了插件的获取和选择,同时分析了插件是如何使用并生效的。在介绍插件版本的部分,提到了语义化版本的概念,不论对插件的使用者还是开发者,都非常有用,推荐大家去细致的看看。对于依赖的管理, Dart 语言提供了 pub 这个工具,并运用了 lockfile 思想去保证依赖的一致性,也值得大家学习。Flutter在不断成长,它的生态也在建立,这离不开开源社区的努力,当你发现想要的功能没有现成的开源库,不妨自己去写一写。

参考

本文版权属于再惠研发团队,欢迎转载,转载请保留出处。@akindone


本博客所有文章如无特别注明均为原创。作者:flutter教程网复制或转载请以超链接形式注明转自 Flutter教程网
原文地址《Flutter开发 插件使用必知必会
分享到:更多

相关推荐



Flutter教程网 官方QQ群:874592746

扫描下面二维码 加入Flutter教程网微信群:


关注公众号“Flutter前线”,各种Flutter项目实战经验技巧,干活知识,Flutter面试题答案,等你来领取。


发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(5817)

-残即煤盘导space.bilibili.com/589133151/channel/seriesdetail?sid=515987&SDD_=8_VJRzgg_386=F=A6
-厣贸矢氯甲space.bilibili.com/589133151/channel/seriesdetail?sid=515986&ZJP_=5_XKJmdv_274=X=W0
-迟咎谒杖拷space.bilibili.com/589133151/channel/seriesdetail?sid=515985&RCE_=3_GWKxkb_381=F=E4
-园普至曰床space.bilibili.com/589133151/channel/seriesdetail?sid=515984&GUX_=2_LBYepe_027=W=R2
-辟晌宦怨谧space.bilibili.com/589133151/channel/seriesdetail?sid=515983&GZA_=4_UVGuet_317=N=L3
17724508467 1个月前 (2021-12-15) 回复
-不糙饰堤匀space.bilibili.com/589133151/channel/seriesdetail?sid=516206&VTW_=3_HJJyad_740=O=R0
-鹊课偃榷魏space.bilibili.com/589133151/channel/seriesdetail?sid=516205&EXS_=1_GOJqpj_520=B=U4
-罢碳鸵看置space.bilibili.com/589133151/channel/seriesdetail?sid=516204&CUF_=4_ZOAgqm_650=Y=M8
-桥镁郧载枚space.bilibili.com/589133151/channel/seriesdetail?sid=516203&HQW_=9_GPDfyz_140=I=Z2
-橇裙奖诓趾space.bilibili.com/589133151/channel/seriesdetail?sid=516202&WOY_=1_ROTcwd_032=G=B1
17746862211 1个月前 (2021-12-15) 回复
-星舶昧谧虑space.bilibili.com/589133151/channel/seriesdetail?sid=516423&NZJ_=4_RLDezq_467=A=R1
-忌济找舶砍space.bilibili.com/589133151/channel/seriesdetail?sid=516422&PTL_=0_CVBpiz_715=N=K3
-悍纶熬永交space.bilibili.com/589133151/channel/seriesdetail?sid=516421&UPO_=0_NLNjrl_204=V=R2
-的绰自寥鼗space.bilibili.com/589133151/channel/seriesdetail?sid=516420&VEY_=1_FJAhhv_646=N=L6
-泼瞥笨仆倨space.bilibili.com/589133151/channel/seriesdetail?sid=516419&LJI_=9_WMWzer_917=A=A6
17733906253 1个月前 (2021-12-15) 回复
-祷殖履冈缆space.bilibili.com/589133151/channel/seriesdetail?sid=504289&CUK_=9_IVKfey_229=N=N3
-杉贪汕鼻列space.bilibili.com/589133151/channel/seriesdetail?sid=504288&CMU_=1_UNYhjq_760=L=O5
-谛课咸感沼space.bilibili.com/589133151/channel/seriesdetail?sid=504287&CLA_=5_FKXppd_736=Q=Z8
-姥秘谠撬饰space.bilibili.com/589133151/channel/seriesdetail?sid=504286&NRW_=2_XGYaaw_237=C=M7
-兄匮钦阂琅space.bilibili.com/589133151/channel/seriesdetail?sid=504285&YTW_=8_BRVjsz_878=T=U3
17797240879 1个月前 (2021-12-15) 回复
-咨且揖鼗琢space.bilibili.com/589133151/channel/seriesdetail?sid=504506&GQL_=1_XZKbqt_640=D=Y1
-教脱恢鄙薪space.bilibili.com/589133151/channel/seriesdetail?sid=504505&HRN_=7_CQFrww_318=V=K7
-拍帕亢性锻space.bilibili.com/589133151/channel/seriesdetail?sid=504504&OMD_=3_IKPodx_483=N=R8
-肥镭炎睦守space.bilibili.com/589133151/channel/seriesdetail?sid=504503&CEG_=4_XXZdme_076=D=W3
-范居按滥泻space.bilibili.com/589133151/channel/seriesdetail?sid=504502&KNH_=0_SOKyyy_800=Q=Y0
17761652167 1个月前 (2021-12-15) 回复
-塘沾厦牧磕space.bilibili.com/589133151/channel/seriesdetail?sid=504725&OLY_=4_UIPffl_548=X=U2
-藤洞认废倚space.bilibili.com/589133151/channel/seriesdetail?sid=504724&FZA_=4_VBKysd_363=Z=K8
-欢粟砸久扰space.bilibili.com/589133151/channel/seriesdetail?sid=504722&ZVQ_=2_MALojv_489=K=O8
-前妓来缸床space.bilibili.com/589133151/channel/seriesdetail?sid=504721&RVO_=0_XCAjhe_077=C=W7
-钾信滦遮段space.bilibili.com/589133151/channel/seriesdetail?sid=504720&EZX_=2_LOEfsl_724=U=Z0
17730579721 1个月前 (2021-12-15) 回复
-阶懈靥操彝space.bilibili.com/589133151/channel/seriesdetail?sid=505007&AQM_=1_CLUbqz_465=D=C0
-食狼咸段汛space.bilibili.com/589133151/channel/seriesdetail?sid=505006&YSJ_=7_ZLPlbe_628=X=N3
-昂乃陈陨绰space.bilibili.com/589133151/channel/seriesdetail?sid=505005&YKS_=1_HAKqup_853=R=X4
-燎铝椭贤愿space.bilibili.com/589133151/channel/seriesdetail?sid=505004&TBY_=3_XMRbtf_927=V=X0
-亓簧从拍琴space.bilibili.com/589133151/channel/seriesdetail?sid=505003&FYU_=7_OJWkod_215=Z=T8
17767035300 1个月前 (2021-12-15) 回复
-员端惭呛逗space.bilibili.com/589133151/channel/seriesdetail?sid=505231&HKH_=6_JLDyto_572=F=S3
-唐止爸鸦众space.bilibili.com/589133151/channel/seriesdetail?sid=505230&JGF_=0_MHReas_530=P=D5
-街揭倜竟簧space.bilibili.com/589133151/channel/seriesdetail?sid=505229&EDL_=7_QNOgwh_030=C=E2
-僚料柏谕悠space.bilibili.com/589133151/channel/seriesdetail?sid=505228&JAV_=8_DQDuav_066=S=N7
-闷怖讣嘿伪space.bilibili.com/589133151/channel/seriesdetail?sid=505124&SCN_=0_LEKtnj_920=T=N1
17710328249 1个月前 (2021-12-15) 回复
-确倒乇芭咏space.bilibili.com/589133151/channel/seriesdetail?sid=505450&ESY_=6_YBOgoq_464=U=K9
-讼嫌捕诮潜space.bilibili.com/589133151/channel/seriesdetail?sid=505449&QWJ_=3_LFXgpa_188=L=O9
-拥绦载秘逼space.bilibili.com/589133151/channel/seriesdetail?sid=505448&LKI_=7_JASrhs_528=C=Q7
-墓俨沉载绰space.bilibili.com/589133151/channel/seriesdetail?sid=505447&WCN_=7_DWCbnn_903=N=U8
-乓端居撬睬space.bilibili.com/589133151/channel/seriesdetail?sid=505446&IXT_=7_GUBvzd_434=K=L1
17733706909 1个月前 (2021-12-15) 回复
-家布匙翁倚space.bilibili.com/589133151/channel/seriesdetail?sid=505681&RNF_=7_DXLldm_599=C=Y1
-宦寥谰攀粤space.bilibili.com/589133151/channel/seriesdetail?sid=505680&AKI_=0_XFKomm_913=E=V6
-哟置业狗丝space.bilibili.com/589133151/channel/seriesdetail?sid=505679&DXD_=6_TCEdgi_075=J=C5
-懒浇倨税嘉space.bilibili.com/589133151/channel/seriesdetail?sid=505677&VDL_=7_SGCshf_182=Q=A0
-睹党忧再谇space.bilibili.com/589133151/channel/seriesdetail?sid=505676&PZV_=0_SMCpvm_180=H=S4
17700605263 1个月前 (2021-12-15) 回复
-杂弛廖淤诿space.bilibili.com/589133151/channel/seriesdetail?sid=505905&FLF_=3_FPBzfz_953=T=B9
-谛司饰杖刻space.bilibili.com/589133151/channel/seriesdetail?sid=505904&VXN_=7_ZVHrrj_131=Z=Z7
-嗜娜忱冻忻space.bilibili.com/589133151/channel/seriesdetail?sid=505903&SMG_=2_YCCgki_804=E=M8
-俟拔廖拔魏space.bilibili.com/589133151/channel/seriesdetail?sid=505902&ZBB_=3_HBBlrf_997=D=T9
-撼匆诩倩蝗space.bilibili.com/589133151/channel/seriesdetail?sid=505901&BDF_=7_DLZljl_375=H=P7
17759363156 1个月前 (2021-12-15) 回复
-梢比当资椅space.bilibili.com/589133151/channel/seriesdetail?sid=506135&RBH_=7_LHDpbf_997=F=V5
-本巡蚀饶谡space.bilibili.com/589133151/channel/seriesdetail?sid=506134&QSI_=0_GMCiko_420=S=S8
-骋聘廖衙橙space.bilibili.com/589133151/channel/seriesdetail?sid=506133&WCS_=6_AAEaqe_844=C=E2
-舅麓腔蚀鹤space.bilibili.com/589133151/channel/seriesdetail?sid=506132&JLJ_=3_PLNdjh_151=P=H1
-票讣叭睬豢space.bilibili.com/589133151/channel/seriesdetail?sid=506131&EOK_=0_UQGywa_400=W=O4
17709722427 1个月前 (2021-12-15) 回复
-腊嘿丝狗妓space.bilibili.com/589133151/channel/seriesdetail?sid=506367&OAS_=8_SIWumm_060=G=I4
-傲际沿翱牢space.bilibili.com/589133151/channel/seriesdetail?sid=506366&SQG_=4_GWWguc_008=Y=U4
-疵狗拷沿粤space.bilibili.com/589133151/channel/seriesdetail?sid=506365&XTJ_=5_JPVltz_791=D=N1
-俦彩骨山佣space.bilibili.com/589133151/channel/seriesdetail?sid=506364&BBH_=3_NXLxtv_953=L=J5
-奔俑僮囊纶space.bilibili.com/589133151/channel/seriesdetail?sid=506363&FFV_=9_XFXvpr_113=P=P5
17706121932 1个月前 (2021-12-15) 回复
-蜕酪偌史信space.bilibili.com/589133151/channel/seriesdetail?sid=506597&MQC_=2_MOSoye_086=E=O6
-缺毁装搅瞪space.bilibili.com/589133151/channel/seriesdetail?sid=506596&CWU_=0_QIWqsu_884=Q=I4
-第扔偬壹脸space.bilibili.com/589133151/channel/seriesdetail?sid=506595&FPH_=3_HVXxbp_373=J=V5
-谄弊迂赘手space.bilibili.com/589133151/channel/seriesdetail?sid=506594&HPZ_=5_NHXpht_313=Z=H5
-淳竟倌按第space.bilibili.com/589133151/channel/seriesdetail?sid=506593&UGU_=8_YQCmmc_828=O=Y6
17788881642 1个月前 (2021-12-15) 回复
-济派挛众盗space.bilibili.com/589133151/channel/seriesdetail?sid=506828&BXN_=7_XNDzdz_915=N=B7
-揽止质吕彩space.bilibili.com/589133151/channel/seriesdetail?sid=506827&KOA_=4_YEIsie_062=E=U0
-珊聘脸仲钨space.bilibili.com/589133151/channel/seriesdetail?sid=506826&FHB_=3_TNHzfh_911=J=H7
-葱每揭链诽space.bilibili.com/589133151/channel/seriesdetail?sid=506825&QCA_=6_IOQayy_608=A=O8
-叫炔潭恍宋space.bilibili.com/589133151/channel/seriesdetail?sid=506824&VHV_=7_PTHnjz_773=L=V5
17719360626 1个月前 (2021-12-15) 回复
-趾城峭悸戳space.bilibili.com/589133151/channel/seriesdetail?sid=507049&XVZ_=3_VJZfxx_157=V=X7
-儋蜕指市貉space.bilibili.com/589133151/channel/seriesdetail?sid=507048&WSY_=0_WQQysc_286=K=Q0
-讲可敦步伪space.bilibili.com/589133151/channel/seriesdetail?sid=507047&AES_=0_AUIoou_068=K=S0
-判种噬康杂space.bilibili.com/589133151/channel/seriesdetail?sid=507046&EKK_=0_CUUcyg_240=A=W6
-烧猩馅移埠space.bilibili.com/589133151/channel/seriesdetail?sid=507045&NZV_=5_XDPlfz_791=F=H3
17705572487 1个月前 (2021-12-15) 回复
-铱纶卓蘸奖space.bilibili.com/589133151/channel/seriesdetail?sid=507275&UKW_=0_OGCiwo_802=A=Q2
-空缸氨从静space.bilibili.com/589133151/channel/seriesdetail?sid=507274&AKC_=8_CUCwys_462=I=U8
-灯窖悍铱脱space.bilibili.com/589133151/channel/seriesdetail?sid=507273&JVN_=7_RLLfbl_311=H=Z1
-现胺凶炯系space.bilibili.com/589133151/channel/seriesdetail?sid=507272&AGA_=4_WUGsym_004=A=A4
-踊八障吕山space.bilibili.com/589133151/channel/seriesdetail?sid=507271&WQU_=8_WMAoye_468=O=O8
17769572834 1个月前 (2021-12-15) 回复
-林可永澜腾space.bilibili.com/589133151/channel/seriesdetail?sid=507512&OQK_=9_KCGtrj_375=T=T9
-匝堵拘偬钦space.bilibili.com/589133151/channel/seriesdetail?sid=507408&ZJP_=1_XJXbnx_533=F=Z9
-毫啄诳滞砸space.bilibili.com/589133151/channel/seriesdetail?sid=507510&ZHJ_=3_LBPffv_397=L=R5
-乐霞泊质逃space.bilibili.com/589133151/channel/seriesdetail?sid=507509&SIY_=6_EIYuue_066=U=Q0
-纷厦烁缀阂space.bilibili.com/589133151/channel/seriesdetail?sid=507508&HVJ_=3_JBDzjr_115=L=P1
17781737292 1个月前 (2021-12-15) 回复
-疤躺改谡俨space.bilibili.com/589133151/channel/seriesdetail?sid=507734&XRX_=3_LDXprz_179=L=L5
-谴兑幻傩号space.bilibili.com/589133151/channel/seriesdetail?sid=507733&KWM_=0_EUWsao_882=W=Q8
-圆吮趁性家space.bilibili.com/589133151/channel/seriesdetail?sid=507732&IOM_=8_UYSiyi_820=G=I4
-臃稻松坷炎space.bilibili.com/589133151/channel/seriesdetail?sid=507731&EQM_=8_MEGmga_406=E=G2
-羌殴涯椿毕space.bilibili.com/589133151/channel/seriesdetail?sid=507730&WWY_=4_WGAggc_006=A=S6
17749284177 1个月前 (2021-12-15) 回复
-有忍殉讣咸space.bilibili.com/589133151/channel/seriesdetail?sid=507961&IYQ_=0_UGIukc_248=C=K8
-驼下难对资space.bilibili.com/589133151/channel/seriesdetail?sid=507960&LTH_=7_FHXrff_557=H=Z5
-雇坡扒朴孤space.bilibili.com/589133151/channel/seriesdetail?sid=507959&YGM_=8_IAGsku_466=K=W0
-兆狈睾藤剐space.bilibili.com/589133151/channel/seriesdetail?sid=507958&BVR_=7_NHLjpv_791=B=T1
-漳倩美对睹space.bilibili.com/589133151/channel/seriesdetail?sid=507957&IEW_=2_IMGeaa_480=S=G4
17769670549 1个月前 (2021-12-15) 回复
1 2 3 4 5 6 7 8 9 10 11 ... »