pub.dev 浏览器
一个用于浏览和收藏托管在 pub.dev 上的软件包的应用。
软件包按更新时间倒序显示,在非 Web 平台上,从最近更新的软件包开始。
关于这个应用
这是一个使用同一作者创建的以下软件包的示例应用程序。
该应用程序展示了这些软件包如何组合在一起。然而,作者本人仍在研究和考虑如何更好地利用它们来使应用程序更具可维护性和易于演进,因此当前的应用设计不一定是最佳的。
- pot
- 一个简单安全的 DI 解决方案。
- 它与 pkg:riverpod 的 providers 有些相似,实例被赋值给一个全局变量,可以从任何地方访问,但不同之处在于 Pot 只是一个服务定位器,只有少数方便的功能,但没有复杂性。
- grab
- 一个基于 `Listenable` (如 `ChangeNotifier` 和 `ValueNotifier`) 的更新来控制 widget 重建的软件包。
- 用法类似于 `BuildContext` 上使用的 `pkg:provider` 的 `watch()` 和 `select()`,但 Grab 不依赖于 widget 树。
- 将其视为一个带过滤功能的 `ValueListenableBuilder` 的扩展方法版本。
- async_phase_notifier
- 一个 `ValueNotifier` 的变体,非常类似于 `pkg:riverpod` 的 AsyncNotifier。
- `AsyncPhase` 比 Riverpod 的 AsyncValue 多了一个“initial”阶段。
- `AsyncPhaseNotifier` 提供了一种监听错误的方法,还有一个 `AsyncErrorListener`,它是一个带有错误处理程序的 widget,方便用于命令式地显示消息(例如显示 SnackBar)或用于日志记录。
- custom_text
- 一个高度可定制的文本 widget,可以根据正则表达式模式灵活地装饰字符串并启用点击/长按/悬停操作。
- 这些装饰和操作在 `CustomTextEditingController` 的文本编辑中也可用,尽管此应用程序未使用该控制器。
如何运行
如果您更改了某些生成的代码的类,请运行以下命令生成更新的代码。
$ flutter pub run build_runner build -d
此项目已包含由 build_runner 生成的代码,因此如果您没有更改任何内容,则上述命令是不必要的。
要启动应用程序,只需运行 `flutter run`,并根据需要添加额外选项。
Web 数据的模拟
遗憾的是,pub.dev API 在 Web 上不可用,因此改用应用程序中预设的模拟数据。该数据包含作者的软件包以及 150 个最受欢迎的软件包。
其他平台上的模拟数据
要在其他平台上使用数据,请按以下方式传递 `USE_MOCK` 环境变量
flutter run --dart-define=USE_MOCK=true
