statflow_dashboard_shared 1.0.1
statflow_dashboard_shared: ^1.0.1 copied to clipboard
Shared Flutter dashboard primitives for Statflow templates.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:statflow_dashboard_shared/statflow_dashboard_shared.dart';
void main() => runApp(const SharedExampleApp());
class SharedExampleApp extends StatelessWidget {
const SharedExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Statflow Dashboard Shared',
debugShowCheckedModeBanner: false,
theme: buildDashboardTheme(),
home: const _SharedExampleScreen(),
);
}
}
class _SharedExampleScreen extends StatelessWidget {
const _SharedExampleScreen();
static const _navItems = [
DashboardNavItem(icon: Icons.space_dashboard_rounded, label: 'Overview', isActive: true),
DashboardNavItem(icon: Icons.bar_chart_rounded, label: 'Trends'),
DashboardNavItem(icon: Icons.pie_chart_rounded, label: 'Mix'),
];
static const _kpis = [
DashboardMetric(label: 'Active Users', value: '12,480', delta: 8.4, deltaLabel: '+8.4% WoW'),
DashboardMetric(label: 'Conversion', value: '4.7%', delta: 0.6, deltaLabel: '+0.6 pts'),
DashboardMetric(label: 'Revenue', value: '\$184K', delta: 12.1, deltaLabel: '+12.1% MoM'),
DashboardMetric(label: 'Churn', value: '2.1%', delta: -0.4, deltaLabel: '-0.4 pts'),
];
static const _trend = [
ChartPoint(label: 'Mon', value: 24),
ChartPoint(label: 'Tue', value: 32),
ChartPoint(label: 'Wed', value: 28),
ChartPoint(label: 'Thu', value: 41),
ChartPoint(label: 'Fri', value: 47),
ChartPoint(label: 'Sat', value: 38),
ChartPoint(label: 'Sun', value: 52),
];
static const _mix = [
DistributionSegment(label: 'Direct', value: 42, color: DashboardColors.primary),
DistributionSegment(label: 'Search', value: 28, color: DashboardColors.sky),
DistributionSegment(label: 'Social', value: 18, color: DashboardColors.lavender),
DistributionSegment(label: 'Email', value: 12, color: DashboardColors.success),
];
@override
Widget build(BuildContext context) {
return DashboardScaffold(
title: 'Shared Primitives',
subtitle: 'A minimal dashboard built from the shared widget set.',
navItems: _navItems,
filters: const DashboardFilterBar(filters: ['Today', '7 days', '30 days']),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
KpiGrid(metrics: _kpis),
SizedBox(height: 20),
TrendCard(
title: 'Weekly Activity',
subtitle: 'Sessions per day across all surfaces',
data: _trend,
highlightColor: DashboardColors.primary,
),
SizedBox(height: 20),
DistributionCard(
title: 'Traffic Mix',
subtitle: 'Channel split for the current period',
segments: _mix,
),
],
),
),
);
}
}