flutter_user_recorder 0.1.0
flutter_user_recorder: ^0.1.0 copied to clipboard
A powerful Flutter package for automatically recording and replaying user interactions on any screen or widget. Perfect for testing, automation, and user flow analysis.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_recorder/flutter_recorder.dart';
import 'views/home_page.dart';
import 'views/second_page.dart';
import 'views/third_page.dart';
// Create controllers - can be shared across the app
final _recorderController = RecorderController();
final _replayer = Replayer(
minDelayMs: 200,
respectTiming: true,
onReplayStart: () => debugPrint('Replay started'),
onReplayComplete: () => debugPrint('Replay completed'),
onEventReplayed: (event) => debugPrint('Replayed: $event'),
onEventFailed: (event, error) => debugPrint('Failed: $event - $error'),
);
void main() {
runApp(const MyApp());
}
/// Main App Widget
/// Sets up RecorderLayer and MaterialApp
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return RecorderLayer(
controller: _recorderController,
replayer: _replayer,
recordNavigation: true,
recordGlobalScroll: true,
recordDrag: true,
child: Builder(
builder: (context) {
// Get navigator observer from RecorderLayer
final navigatorObserver = RecorderLayer.navigatorObserver(
RecorderLayer.of(context),
);
return MaterialApp(
title: 'Flutter Recorder Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
navigatorObservers: [navigatorObserver],
initialRoute: '/',
routes: {
'/': (context) => HomePage(
recorderController: _recorderController,
replayer: _replayer,
),
'/second': (context) => SecondPage(
recorderController: _recorderController,
replayer: _replayer,
),
'/third': (context) => ThirdPage(
recorderController: _recorderController,
replayer: _replayer,
),
},
);
},
),
);
}
}