import 'package:aurcache/components/api/APIBuilder.dart'; import 'package:aurcache/providers/stats_provider.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../components/dashboard/header.dart'; import '../constants/color_constants.dart'; import '../providers/builds_provider.dart'; import '../providers/packages_provider.dart'; import '../utils/responsive.dart'; import '../models/stats.dart'; import '../components/dashboard/quick_info_banner.dart'; import '../components/dashboard/recent_builds.dart'; import '../components/dashboard/your_packages.dart'; import '../components/dashboard/side_panel.dart'; class DashboardScreen extends StatefulWidget { @override State createState() => _DashboardScreenState(); } class _DashboardScreenState extends State { @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => StatsProvider()), ChangeNotifierProvider( create: (_) => PackagesProvider()), ChangeNotifierProvider(create: (_) => BuildsProvider()), ], child: APIBuilder( interval: const Duration(seconds: 10), onData: (stats) { return SafeArea( child: SingleChildScrollView( child: Container( padding: const EdgeInsets.all(defaultPadding), child: Column( children: [ const Header(), const SizedBox(height: defaultPadding), QuickInfoBanner( stats: stats, ), const SizedBox(height: defaultPadding), Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( flex: 5, child: Column( children: [ const YourPackages(), const SizedBox(height: defaultPadding), const RecentBuilds(), if (Responsive.isMobile(context)) const SizedBox(height: defaultPadding), if (Responsive.isMobile(context)) SidePanel( nrbuilds: stats.total_builds, nrfailedbuilds: stats.failed_builds, nrActiveBuilds: stats.active_builds), ], ), ), if (!Responsive.isMobile(context)) const SizedBox(width: defaultPadding), // On Mobile means if the screen is less than 850 we dont want to show it if (!Responsive.isMobile(context)) Expanded( flex: 2, child: SidePanel( nrbuilds: stats.total_builds, nrfailedbuilds: stats.failed_builds, nrActiveBuilds: stats.active_builds), ), ], ) ], ), ), ), ); }, onLoad: () { return Text("loading"); }, ), ); } }