logrocket_flutter 0.2.0-beta
logrocket_flutter: ^0.2.0-beta copied to clipboard
LogRocket SDK Plugin for Flutter. LogRocket sessions provide a comprehensive understanding of how users engage with your app.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:logrocket_flutter/logrocket_flutter.dart';
void main() {
// initialize LogRocket session for your app id with all default configurations
LogRocket.wrapAndInitialize(
LogRocketWrapConfiguration(),
LogRocketInitConfiguration(appID: 'YOUR_APP_ID'),
() => runApp(MyApp())
);
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => MyAppState(),
// Capture visual session replay
child: LogRocketWidget(
child: MaterialApp(
title: 'Example App',
theme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
),
home: MyHomePage(),
// automatically track Navigator Route changes
navigatorObservers: [LogRocketNavigatorObserver('logrocket.example')],
),
),
);
}
}
class MyAppState extends ChangeNotifier {
var name = 'world';
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
var appState = context.watch<MyAppState>();
return SafeArea(
child: Scaffold(
body: Column(
children: [
ElevatedButton(
onPressed: () {
// identify a user
LogRocket.identify(appState.name, {
'favoriteColor': 'purple',
});
// capture a log message
LogRocket.info('Hello ${appState.name}');
},
child: Text('Hello ${appState.name}'),
),
ElevatedButton(
onPressed: () {
// track a custom event
LogRocket.track(LogRocketCustomEventBuilder('purchase-item')..putRevenue(5.99));
},
child: Text('Purchase'),
),
// redact element from session replay
LogRocketRedact(
child: Text('hidden in replay', textDirection: TextDirection.ltr),
)
],
),
),
);
}
}