Flutter Real-Time CPU & RAM Monitor App with Animated Graphs – Full UI Code (FuzzuTech)
Demo :
Click Video πππ
Features:
✔ Enable Title
✔ Allow Comments
✔ Use HTTPS
✔ Custom Permalink:
/flutter-cpu-ram-monitor-dashboard-animated-ui
Code :
pubspec.yaml:
dependencies:flutter:sdk: flutterfl_chart: ^1.1.1system_info2: ^3.0.2workmanager: ^0.5.0
main.dart
import 'dart:async';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:fl_chart/fl_chart.dart';
void main() {
runApp(const MonitorApp());
}
class MonitorApp extends StatelessWidget {
const MonitorApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData.dark(),
home: const MonitorScreen(),
);
}
}
class MonitorScreen extends StatefulWidget {
const MonitorScreen({super.key});
@override
State<MonitorScreen> createState() => _MonitorScreenState();
}
class _MonitorScreenState extends State<MonitorScreen> {
double cpu = 10;
double ram = 20;
final rnd = Random();
@override
void initState() {
super.initState();
Timer.periodic(const Duration(milliseconds: 900), (_) => animate());
}
void animate() {
setState(() {
cpu = rnd.nextInt(80) + rnd.nextDouble();
ram = rnd.nextInt(90) + rnd.nextDouble();
});
}
Widget card(String title, double value, Color color) {
return Container(
height: 200,
margin: const EdgeInsets.all(16),
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.black45,
borderRadius: BorderRadius.circular(18),
border: Border.all(color: color),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("$title: ${value.toStringAsFixed(1)}%",
style: const TextStyle(fontSize: 20)),
const SizedBox(height: 10),
Expanded(
child: LineChart(LineChartData(
minY: 0,
maxY: 100,
titlesData: const FlTitlesData(show: false),
gridData: const FlGridData(show: false),
borderData: FlBorderData(show: false),
lineBarsData: [
LineChartBarData(
isCurved: true,
color: color,
barWidth: 4,
spots: [
FlSpot(0, value * .7),
FlSpot(1, value * .9),
FlSpot(2, value),
],
dotData: const FlDotData(show: false),
)
],
)),
)
],
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Device Usage Monitor (Animated)"),
backgroundColor: Colors.deepPurple,
),
body: Column(
children: [
card("CPU Usage", cpu, Colors.purpleAccent),
card("RAM Usage", ram, Colors.tealAccent),
],
),
);
}
}
Comments
Post a Comment