dev_analytics_dashboard 0.0.1
dev_analytics_dashboard: ^0.0.1 copied to clipboard
Flutter Dev Analytics Dashboard for version 0.0.1 with features: device info, performance metrics, screen logs, error tracking, user flow visualization, and a gesture-based toggle.
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:dev_analytics_dashboard/dev_analytics_dashboard.dart';
void main() {
runApp(const ExampleApp());
}
class ExampleApp extends StatelessWidget {
const ExampleApp({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => AnalyticsProvider(),
child: MaterialApp(
title: 'Dev Analytics Dashboard Example',
theme: ThemeData(primarySwatch: Colors.blue),
home: const ExampleHomeScreen(),
navigatorObservers: [AnalyticsNavigatorObserver()],
),
);
}
}
class ExampleHomeScreen extends StatelessWidget {
const ExampleHomeScreen({super.key});
@override
Widget build(BuildContext context) {
final provider = Provider.of<AnalyticsProvider>(context);
final gestureConfig = provider.gestureConfig;
return GestureDetector(
onTap: () {
if (gestureConfig.tapCount == 1 && gestureConfig.fingerCount == 1) {
provider.toggleDashboard();
}
},
onDoubleTap: () {
if (gestureConfig.tapCount == 2 && gestureConfig.fingerCount <= 2) {
provider.toggleDashboard();
}
},
onTapUp: (details) {
if (gestureConfig.tapCount == 3 && gestureConfig.fingerCount <= 3) {
Future.delayed(const Duration(milliseconds: 300), () {
provider.toggleDashboard();
});
}
},
child: Scaffold(
appBar: AppBar(title: const Text('Example Home')),
body: Stack(
children: [
Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => const ExampleSecondScreen(),
),
);
},
child: const Text('Go to Second Screen'),
),
],
),
),
const AnalyticsDashboard(),
],
),
),
);
}
}
class ExampleSecondScreen extends StatelessWidget {
const ExampleSecondScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Example Second Screen')),
body: const Center(child: Text('Second Screen')),
);
}
}