Flutter会话管理插件session_mate的使用
Flutter会话管理插件session_mate的使用
Session Mate
Session Mate 是一款专为专业Flutter开发者设计的会话回放工具。它可以帮助你立即重现生产环境中的bug。
- 注册试用:点击这里进行早期Beta版注册。
开发者指南
Firebase Emulator
flutter run --dart-define-from-file=assets/environments/development.emulator.json
Firebase Cloud
flutter run --dart-define-from-file=assets/environments/development.cloud.json
配置文件示例
{
"APP_BASE_URL": "https://www.googleapis.com",
"APP_USE_FAKE_DATA": false,
"SESSION_MATE_API_KEY": "your-api-key",
"SESSION_MATE_BASE_URL": "http://your.domain",
"SESSION_MATE_INTEGRATION_TEST_BACKEND_ONLY": false,
"SESSION_MATE_INTEGRATION_TEST_LOCAL_ONLY": false,
"SESSION_MATE_INTEGRATION_TEST_UI_ONLY": false,
"SESSION_MATE_INTEGRATION_TEST": false,
"SESSION_MATE_LOG_NETWORK_EVENTS": false,
"SESSION_MATE_LOG_RAW_NETWORK_EVENTS": false,
"SESSION_MATE_RECORD_SESSION": true,
"SESSION_MATE_REPLAY_SESSION": false,
"SESSION_MATE_SANDBOX_MODE": false,
"SESSION_MATE_VERBOSE_LOGS": false
}
示例代码
import 'dart:async';
import 'package:bookshelf/app/app.bottomsheets.dart';
import 'package:bookshelf/app/app.dialogs.dart';
import 'package:bookshelf/app/app.locator.dart';
import 'package:bookshelf/app/app.router.dart';
import 'package:flutter/material.dart';
import 'package:session_mate/session_mate.dart';
import 'package:stacked_services/stacked_services.dart';
const _apiKey = bool.hasEnvironment('SESSION_MATE_API_KEY')
? String.fromEnvironment('SESSION_MATE_API_KEY')
: null;
const _logNetworkEvents =
bool.fromEnvironment('SESSION_MATE_LOG_NETWORK_EVENTS');
const _logRawNetworkEvents =
bool.fromEnvironment('SESSION_MATE_LOG_RAW_NETWORK_EVENTS');
Future<void> main() async {
if (!kReplaySession) {
WidgetsFlutterBinding.ensureInitialized();
}
await setupSessionMate();
await setupLocator();
setupDialogUi();
setupBottomSheetUi();
SessionMateCrashMonitor.monitor(const MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: Routes.startupView,
onGenerateRoute: StackedRouter().onGenerateRoute,
navigatorKey: StackedService.navigatorKey,
navigatorObservers: [
StackedService.routeObserver,
SessionMateNavigatorObserver.instance,
],
builder: (context, child) => SessionMateBuilder(
apiKey: _apiKey,
logNetworkEvents: _logNetworkEvents,
logRawNetworkEvents: _logRawNetworkEvents,
minimumStartupTime: 60000,
verboseLogs: true,
child: child!,
),
theme: ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
textSelectionTheme: const TextSelectionThemeData(
cursorColor: Colors.white,
),
inputDecorationTheme: const InputDecorationTheme(
border: InputBorder.none,
filled: true,
fillColor: Color(0FF232228),
),
scaffoldBackgroundColor: const Color(0xFF113111B),
textTheme: const TextTheme(
bodyMedium: TextStyle(fontSize: 14),
displayLarge: TextStyle(fontSize: 72, fontWeight: FontWeight.bold),
titleLarge: TextStyle(fontSize: 26, fontWeight: FontWeight.bold),
titleSmall: TextStyle(fontWeight: FontWeight.bold),
),
),
);
}
}
更多关于Flutter会话管理插件session_mate的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复