开发了个 Flipper 调试工具的 Flutter 版本 SDK,让 Flutter 应用调试起来更容易
生活随笔
收集整理的這篇文章主要介紹了
开发了个 Flipper 调试工具的 Flutter 版本 SDK,让 Flutter 应用调试起来更容易
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近一直在持續的學習 Flutter,但一直沒有發現有好用的網絡調試工具,也不想太想使用 Charles 這個工具,后來發現了Facebook Flipper 這個工具,所以花了幾天時間做了個 Flutter 版的 Flipper SDK。期間碰到了一些問題但 Flipper 項目的人迅速的幫忙。
這個庫可以讓你能夠在 Flipper 上查看你的 Flutter 應用的網絡請求及 Preferences 數據,相比之前我之前使用 print 來輸出請求數據來說,實在是方便了好多,如果你也在用 Flutter 開發你的應用,不妨來試一下吧。
特性
- Network inspector
- Shared preferences (and UserDefaults) inspector
集成到你的項目
必備條件
開始之前確保你已安裝:
- 已安裝 Flipper Desktop
安裝
添加以下內容到包的 pubspec.yaml 文件中:
dependencies:flutter_flipperkit: ^0.0.2根據示例更改項目的 ios/Podfile 文件:
Flipper 目前需要的 platform 為 8.0 +source 'https://github.com/facebook/flipper.git' +source 'https://github.com/CocoaPods/Specs' # Uncomment this line to define a global platform for your project -# platform :ios, '9.0' +platform :ios, '9.0'根據示例更改項目的 android/app/build.gradle 文件:
Flipper 目前需要的 sdkVersion 為 28 android { - compileSdkVersion 27 + compileSdkVersion 28defaultConfig { - targetSdkVersion 27 + targetSdkVersion 28} }您可以通過命令行安裝軟件包:
$ flutter packages get快速集成
添加下列代碼到 lib/main.dart 文件:
import 'package:flutter_flipperkit/flutter_flipperkit.dart';void main() {FlipperClient flipperClient = FlipperClient.getDefault();// 添加網絡插件flipperClient.addPlugin(new FlipperNetworkPlugin());// 添加 Preferences 插件flipperClient.addPlugin(new FlipperSharedPreferencesPlugin());flipperClient.start();runApp(MyApp()); }Dio 集成示例:
import 'dart:io'; import 'package:dio/dio.dart'; import 'package:flutter_flipperkit/flutter_flipperkit.dart'; import 'package:uuid/uuid.dart';class DioClient {Dio _http;FlipperNetworkPlugin _flipperNetworkPlugin;DioClient() {_flipperNetworkPlugin = FlipperClient.getDefault().getPlugin(FlipperNetworkPlugin.ID);Options options = new Options(connectTimeout: 5000,receiveTimeout: 3000,headers: {"Accept": "application/json","Content-Type": "application/json"},responseType: ResponseType.JSON,);this._http = new Dio(options);// 在攔截器中添加和 Flipper 通訊的代碼this._http.interceptor.request.onSend = (Options options) async {// 發送請求數據到 Flipperthis._reportRequest(options);return options;};this._http.interceptor.response.onSuccess = (Response response) {// 發送響應數據到 Flipperthis._reportResponse(response);return response;};}Dio get http {return _http;}void _reportRequest(Options options) {String requestId = new Uuid().v4();options.extra.putIfAbsent("requestId", () => requestId);RequestInfo requestInfo = new RequestInfo(requestId: requestId,timeStamp: new DateTime.now().millisecondsSinceEpoch,uri: '${options.baseUrl}${options.path}',headers: options.headers,method: options.method,body: options.data,);_flipperNetworkPlugin.reportRequest(requestInfo);}void _reportResponse(Response response) {Map<String, dynamic> headers = new Map();for (var key in []..addAll(HttpHeaders.entityHeaders)..addAll(HttpHeaders.requestHeaders)..addAll(HttpHeaders.responseHeaders)) {var value = response.headers.value(key);if (value != null && value.isNotEmpty) {headers.putIfAbsent(key, () => value);}}String requestId = response.request.extra['requestId'];ResponseInfo responseInfo = new ResponseInfo(requestId: requestId,timeStamp: new DateTime.now().millisecondsSinceEpoch,statusCode: response.statusCode,headers: headers,body: response.data,);_flipperNetworkPlugin.reportResponse(responseInfo);} }Dio 使用示例
new DioClient().http.get('https://www.v2ex.com/api/topics/hot.json');運行程序
這時,集成已經完成,啟用應用后可在 Flipper Desktop 上實時看到你的網絡請求了
$ flutter run已知問題
- Flipper Desktop 中文亂碼,但已解決并提交 PR 給官方,暫時可以使用我修改的版本 https://github.com/lijy91/fli...
- 暫不支持 iOS 真機
探討
如果您對此項目有任何建議或疑問,可以通過 Telegram 或我的微信進行討論。
相關鏈接
- https://github.com/blankapp/f...
- https://github.com/facebook/f...
總結
以上是生活随笔為你收集整理的开发了个 Flipper 调试工具的 Flutter 版本 SDK,让 Flutter 应用调试起来更容易的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 非技术相关的文章
- 下一篇: 透过 OKR 进行项目过程管理