Flutter Business Control Panel App (Invoice, POS, Stock, Attendance)

 Demo :


Click Video πŸ‘‡πŸ‘‡πŸ‘‡



























πŸ“Œ FEATURES SECTION

  • Modern Business Dashboard

  • Invoice & POS System

  • Stock & Inventory Control

  • Employee Attendance

  • Dark Professional UI

  • Single File Flutter Project


Code :


import 'package:flutter/material.dart';


void main() {

  runApp(const BusinessApp());

}


class BusinessApp extends StatelessWidget {

  const BusinessApp({super.key});


  @override

  Widget build(BuildContext context) {

    return MaterialApp(

      debugShowCheckedModeBanner: false,

      title: 'Business Control Panel',

      theme: ThemeData.dark().copyWith(

        scaffoldBackgroundColor: const Color(0xFF0B0F1A),

      ),

      home: const DashboardScreen(),

    );

  }

}


class DashboardScreen extends StatelessWidget {

  const DashboardScreen({super.key});


  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(

        elevation: 0,

        backgroundColor: Colors.transparent,

        centerTitle: true,

        title: const Text(

          'Business Control Panel',

          style: TextStyle(fontWeight: FontWeight.bold),

        ),

      ),

      body: SingleChildScrollView(

        padding: const EdgeInsets.all(16),

        child: Column(

          crossAxisAlignment: CrossAxisAlignment.start,

          children: [

            _buildHeader(),

            const SizedBox(height: 20),

            _buildStatsGrid(),

            const SizedBox(height: 20),

            _buildQuickActions(),

            const SizedBox(height: 20),

            _buildActivityLog(),

          ],

        ),

      ),

    );

  }


  // ================= HEADER =================

  Widget _buildHeader() {

    return Container(

      padding: const EdgeInsets.all(20),

      decoration: BoxDecoration(

        gradient: const LinearGradient(

          colors: [Color(0xFF6A5AE0), Color(0xFF00C6FF)],

        ),

        borderRadius: BorderRadius.circular(16),

      ),

      child: Row(

        children: [

          const Icon(Icons.business_center, size: 40),

          const SizedBox(width: 12),

          Column(

            crossAxisAlignment: CrossAxisAlignment.start,

            children: [

              const Text(

                "Welcome, Admin",

                style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),

              ),

              Text(

                "Enterprise Business Overview",

                style: TextStyle(

                  fontSize: 13,

                  color: Colors.white.withOpacity(0.9),

                ),

              ),

            ],

          )

        ],

      ),

    );

  }


  // ================= STATS GRID =================

  Widget _buildStatsGrid() {

    return GridView.count(

      crossAxisCount: 2,

      shrinkWrap: true,

      physics: const NeverScrollableScrollPhysics(),

      mainAxisSpacing: 12,

      crossAxisSpacing: 12,

      children: const [

        _StatCard(

          title: "Total Sales",

          value: "₹ 1,25,000",

          icon: Icons.receipt_long,

          color: Colors.greenAccent,

        ),

        _StatCard(

          title: "Invoices",

          value: "342",

          icon: Icons.description,

          color: Colors.orangeAccent,

        ),

        _StatCard(

          title: "Stock Items",

          value: "128",

          icon: Icons.inventory_2,

          color: Colors.cyanAccent,

        ),

        _StatCard(

          title: "Employees",

          value: "24",

          icon: Icons.people_alt,

          color: Colors.purpleAccent,

        ),

      ],

    );

  }


  // ================= QUICK ACTIONS =================

  Widget _buildQuickActions() {

    return Column(

      crossAxisAlignment: CrossAxisAlignment.start,

      children: [

        const Text(

          "Quick Actions",

          style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),

        ),

        const SizedBox(height: 12),

        Row(

          mainAxisAlignment: MainAxisAlignment.spaceBetween,

          children: const [

            _ActionButton(icon: Icons.add_chart, label: "Invoice"),

            _ActionButton(icon: Icons.point_of_sale, label: "POS"),

            _ActionButton(icon: Icons.inventory, label: "Stock"),

            _ActionButton(icon: Icons.fact_check, label: "Attendance"),

          ],

        )

      ],

    );

  }


  // ================= ACTIVITY LOG =================

  Widget _buildActivityLog() {

    return Column(

      crossAxisAlignment: CrossAxisAlignment.start,

      children: [

        const Text(

          "Recent Activity",

          style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),

        ),

        const SizedBox(height: 10),

        _activityTile("Invoice #INV-342 generated", Icons.receipt),

        _activityTile("Stock updated (Laptop)", Icons.inventory),

        _activityTile("Employee marked present", Icons.check_circle),

      ],

    );

  }


  Widget _activityTile(String text, IconData icon) {

    return Container(

      margin: const EdgeInsets.only(bottom: 8),

      padding: const EdgeInsets.all(12),

      decoration: BoxDecoration(

        color: const Color(0xFF141A2E),

        borderRadius: BorderRadius.circular(12),

      ),

      child: Row(

        children: [

          Icon(icon, size: 20, color: Colors.blueAccent),

          const SizedBox(width: 10),

          Expanded(

            child: Text(text, style: const TextStyle(fontSize: 14)),

          )

        ],

      ),

    );

  }

}


// ================= COMPONENTS =================


class _StatCard extends StatelessWidget {

  final String title;

  final String value;

  final IconData icon;

  final Color color;


  const _StatCard({

    required this.title,

    required this.value,

    required this.icon,

    required this.color,

  });


  @override

  Widget build(BuildContext context) {

    return Container(

      padding: const EdgeInsets.all(16),

      decoration: BoxDecoration(

        color: const Color(0xFF141A2E),

        borderRadius: BorderRadius.circular(16),

      ),

      child: Column(

        crossAxisAlignment: CrossAxisAlignment.start,

        children: [

          Icon(icon, color: color, size: 28),

          const Spacer(),

          Text(

            value,

            style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),

          ),

          Text(

            title,

            style: TextStyle(

              fontSize: 13,

              color: Colors.white.withOpacity(0.7),

            ),

          ),

        ],

      ),

    );

  }

}


class _ActionButton extends StatelessWidget {

  final IconData icon;

  final String label;


  const _ActionButton({

    required this.icon,

    required this.label,

  });


  @override

  Widget build(BuildContext context) {

    return Column(

      children: [

        Container(

          width: 60,

          height: 60,

          decoration: BoxDecoration(

            gradient: const LinearGradient(

              colors: [Color(0xFF00C6FF), Color(0xFF6A5AE0)],

            ),

            borderRadius: BorderRadius.circular(16),

          ),

          child: Icon(icon, size: 28),

        ),

        const SizedBox(height: 6),

        Text(label, style: const TextStyle(fontSize: 12))

      ],

    );

  }

}


Comments

Popular posts from this blog

Is This News Real or Fake? πŸ€– AI Exposes the Truth | FuzzuTech Python App Demo

🚨 Python Intrusion Detection System (IDS) – Real-Time ML + Tkinter GUI Project | FuzzuTech

Educational File Encryptor GUI (Python AES Project) | FuzzuTech