Flutter性能监控与分析插件truesight_core的使用
Flutter性能监控与分析插件truesight_core的使用
特性
- JSON处理
- 与后端兼容的数据过滤类型
- 将HTTP响应转换为各种格式
安装
要安装该包:
flutter pub add truesight_core
如何使用
JSON处理
该包定义了以下JSON数据类型:
JsonBoolean
:用于bool
类型JsonDate
:用于DateTime
类型JsonList
:用于List<Object>
类型JsonNumber
:用于num
类型JsonObject
:用于Object
类型JsonString
:用于String
类型
模型定义
例如:
class User extends DataModel {
//
JsonBoolean isAdmin = JsonBoolean("isAdmin");
JsonString username = JsonString("username");
JsonDate dateOfBirth = JsonDate("dateOfBirth");
//
}
使用:
JsonType fieldName = JsonType("jsonFieldName");
将对象转换为JSON和从JSON转换:
User.fromJSON(Map<String, dynamic> json); // 从JSON创建User对象
final Map<String, dynamic> json = User.toJSON(); // 转换为Dart Map
final String jsonString = User.toString(); // 转换为JSON字符串
高级过滤器
过滤器类型:
DateFilter
:用于日期类型的字段StringFilter
:用于string
类型的字段NumberFilter
:用于数值类型的字段GuidFilter
:用于Guid类型的键字段(主键或外键)IdFilter
:用于整数Id类型的键字段
过滤器类示例
class UserFilter extends DataFilter {
StringFilter username = StringFilter();
DateFilter dateOfBirth = DateFilter();
// 默认字段
int skip;
int take;
String? orderBy;
OrderType? orderType;
}
排序类型
有两种排序类型:
OrderType.asc; // 升序
OrderType.desc; // 降序
HTTPRepository
仓库是一个包含调用后端控制器/API组对应API的方法的类。
创建仓库示例
[@singleton](/user/singleton) // 这是GetIt注解 => 使该类成为单例实例
class AccountRepository extends HttpRepository {
// 这告诉仓库使用拦截器来转换每个请求
[@override](/user/override)
bool get useInterceptor => true;
// 这是与`useInterceptor = true`一起使用的拦截器包装器
[@override](/user/override)
InterceptorsWrapper interceptorsWrapper = globalInterceptorsWrapper;
// 基础URL,例如:https://example.com
// 应使用`flutter_dotenv`配置apiBaseUrl,
[@override](/user/override)
String get baseUrl => dotenv.apiBaseUrl;
AccountRepository() : super("api/prefix");
Future<AppUser> login(String username, String password) {
return post(
url("login"),
data: {
"username": username,
"password": password,
},
).then(
(Response response) => response.body<AppUser>(AppUser),
);
}
Future<AppUser> getProfile() {
return post(
url("get"),
data: {},
).then(
(Response response) => response.body<AppUser>(AppUser),
);
}
Future<Map<String, dynamic>> refreshToken() {
return post(
url("refresh-token"),
data: {},
).then(
(Response response) => response.data,
);
}
}
此文档概述了Truesight包在Dart和Flutter中的核心功能,包括其JSON处理能力、过滤类型以及处理HTTP响应的方法,并提供了安装和使用说明。
完整示例代码
import 'package:flutter/material.dart';
import 'package:truesight_core/truesight_core.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Truesight Core Example')),
body: Center(
child: Text('Hello, Truesight Core!'),
),
),
);
}
}
class User extends DataModel {
JsonBoolean isAdmin = JsonBoolean("isAdmin");
JsonString username = JsonString("username");
JsonDate dateOfBirth = JsonDate("dateOfBirth");
}
class UserFilter extends DataFilter {
StringFilter username = StringFilter();
DateFilter dateOfBirth = DateFilter();
int skip;
int take;
String? orderBy;
OrderType? orderType;
}
[@singleton](/user/singleton)
class AccountRepository extends HttpRepository {
[@override](/user/override)
bool get useInterceptor => true;
[@override](/user/override)
InterceptorsWrapper interceptorsWrapper = globalInterceptorsWrapper;
[@override](/user/override)
String get baseUrl => dotenv.apiBaseUrl;
AccountRepository() : super("api/prefix");
Future<AppUser> login(String username, String password) {
return post(
url("login"),
data: {
"username": username,
"password": password,
},
).then(
(Response response) => response.body<AppUser>(AppUser),
);
}
Future<AppUser> getProfile() {
return post(
url("get"),
data: {},
).then(
(Response response) => response.body<AppUser>(AppUser),
);
}
Future<Map<String, dynamic>> refreshToken() {
return post(
url("refresh-token"),
data: {},
).then(
(Response response) => response.data,
);
}
}
更多关于Flutter性能监控与分析插件truesight_core的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter性能监控与分析插件truesight_core的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成和使用性能监控与分析插件truesight_core
的代码案例。请注意,实际使用中可能需要根据truesight_core
的最新版本和API文档进行调整。
1. 添加依赖
首先,在你的Flutter项目的pubspec.yaml
文件中添加truesight_core
依赖:
dependencies:
flutter:
sdk: flutter
truesight_core: ^最新版本号 # 替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 初始化插件
在你的Flutter应用的入口文件(通常是main.dart
)中初始化truesight_core
插件。
import 'package:flutter/material.dart';
import 'package:truesight_core/truesight_core.dart';
void main() {
// 初始化TrueSight Core
TrueSightCore.instance.initialize(
appKey: '你的AppKey', // 替换为你的TrueSight App Key
appVersion: '1.0.0', // 替换为你的应用版本
enableLog: true // 是否启用日志打印,生产环境建议关闭
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter TrueSight Demo'),
),
body: Center(
child: Text('Hello, TrueSight!'),
),
);
}
}
3. 使用性能监控功能
truesight_core
插件提供了多种性能监控功能,如页面加载时间、网络请求监控等。以下是一些示例代码,展示如何使用这些功能。
页面加载时间监控
你可以在每个页面的initState
和dispose
方法中记录页面加载和销毁的时间。
import 'package:flutter/material.dart';
import 'package:truesight_core/truesight_core.dart';
class MonitoredPage extends StatefulWidget {
@override
_MonitoredPageState createState() => _MonitoredPageState();
}
class _MonitoredPageState extends State<MonitoredPage> {
@override
void initState() {
super.initState();
// 记录页面加载时间
TrueSightCore.instance.trackPageStart('MonitoredPage');
}
@override
void dispose() {
// 记录页面结束时间
TrueSightCore.instance.trackPageEnd('MonitoredPage');
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Monitored Page'),
),
body: Center(
child: Text('This page is monitored by TrueSight Core.'),
),
);
}
}
网络请求监控
你可以使用TrueSightCore
提供的网络请求包装器来监控HTTP请求。
import 'package:dio/dio.dart';
import 'package:truesight_core/truesight_core.dart';
// 创建Dio实例
final Dio dio = Dio();
// 包装HTTP请求以进行监控
Future<Response> monitoredRequest(String url, Map<String, dynamic> params) async {
try {
// 开始监控网络请求
TrueSightCore.instance.startNetworkRequest(
url: url,
method: 'GET', // 替换为实际的请求方法
params: params,
);
// 执行HTTP请求
Response response = await dio.get(url, queryParameters: params);
// 结束监控网络请求
TrueSightCore.instance.endNetworkRequest(
url: url,
statusCode: response.statusCode,
responseTime: response.requestOptions.responseTime,
);
return response;
} catch (error) {
// 如果发生错误,结束监控并记录错误信息
TrueSightCore.instance.endNetworkRequest(
url: url,
statusCode: null,
responseTime: null,
error: error.toString(),
);
throw error;
}
}
// 使用监控的网络请求
void fetchData() async {
try {
Response response = await monitoredRequest('https://api.example.com/data', {});
print('Response data: ${response.data}');
} catch (error) {
print('Error fetching data: $error');
}
}
4. 注意事项
- 确保你已经正确配置了TrueSight平台,并获取了有效的App Key。
- 在生产环境中,注意关闭不必要的日志打印,以保护用户隐私和数据安全。
- 根据你的应用需求,选择性地使用TrueSight Core提供的各种性能监控功能。
以上是如何在Flutter项目中集成和使用truesight_core
插件的基本步骤和代码案例。如果你需要更详细的功能和配置信息,请参考truesight_core
的官方文档。