Flutter AdminPanel

A comprehensive Flutter admin panel library inspired by react-admin, with a universal adapter system for any data source.

pub package License: MIT

πŸ“š Documentation

Read the full documentation on GitBook β†’

✨ Features

  • 🎨 Modern UI - Clean, Material Design 3 interface
  • πŸ”Œ Universal Adapters - Connect to any data source with REST API
  • πŸ”§ Plug-and-Play - No forced dependencies, use only what you need
  • πŸ—“οΈ Event Management - Complete event lifecycle with automatic status updates
  • πŸ“± Cross-Platform - Works on Web, Mobile, and Desktop
  • πŸ”’ Type Safe - Written in Dart with strong typing
  • ⚑ High Performance - Optimized for large datasets
  • 🌐 Offline Support - Built-in caching and sync
  • 🎯 Production Ready - Battle-tested in real-world applications

πŸ“¦ Supported Data Sources

Built-in (No Extra Dependencies)

  • βœ… REST API - Works with any RESTful backend

πŸ“¦ Installation

dependencies:
  flutter_adminpanel: ^1.4.1
flutter pub get

πŸ“– Full Installation Guide β†’

⚑ Quick Start

Step 1: Choose Your Data Provider

import 'package:flutter/material.dart';
import 'package:flutter_adminpanel/flutter_adminpanel.dart';
import 'package:flutter_adminpanel/adapters/rest.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // Register REST API provider
  final provider = await registerRestProvider(
    baseUrl: 'https://api.example.com',
  );
  
  runApp(MyAdminApp(provider: provider));
}

Step 2: Build Your Admin Panel

class MyAdminApp extends StatelessWidget {
  final DataProvider provider;
  
  const MyAdminApp({Key? key, required this.provider}) : super(key: key);
  
  @override
  Widget build(BuildContext context) {
    return AdminApp(
      title: 'My Admin Panel',
      dataProvider: provider,
      resources: [
        Resource(
          name: 'products',
          list: ProductListScreen(),
          create: ProductCreateScreen(),
          edit: ProductEditScreen(),
        ),
      ],
    );
  }
}

Step 3: Define Your Resource

class ProductListScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ResourceList(
      resource: 'products',
      columns: [
        ColumnConfig(field: 'id', label: 'ID', width: 80),
        ColumnConfig(field: 'name', label: 'Name', sortable: true),
        ColumnConfig(
          field: 'price',
          label: 'Price',
          sortable: true,
          format: (value) => '\$${value.toStringAsFixed(2)}',
        ),
      ],
    );
  }
}

πŸ“– Complete Quick Start Guide β†’

πŸ”Œ Universal Adapter System

Connect to any data source without adding unnecessary dependencies:

// REST API
import 'package:flutter_adminpanel/adapters/rest.dart';
final provider = await registerRestProvider(baseUrl: 'https://api.example.com');

πŸ“– Full Adapters Guide β†’

πŸ“š Documentation

Getting Started

Data Providers

Features

Reference

🎯 Example Application

See the example directory for a complete admin panel with:

  • REST API data provider
  • Event management
  • Onboarding flow
  • File uploads

View Example β†’

πŸ§ͺ Testing

# Run unit tests
flutter test

# Run integration tests
cd example
flutter test integration_test/

πŸ—οΈ Architecture

AdminApp
β”œβ”€β”€ Data Provider Registry (Adapter System)
β”‚   β”œβ”€β”€ REST API Adapter
β”‚   └── Custom Adapters
β”œβ”€β”€ Resources
β”‚   β”œβ”€β”€ List View
β”‚   β”œβ”€β”€ Create Form
β”‚   β”œβ”€β”€ Edit Form
β”‚   └── Show View
└── Services
    β”œβ”€β”€ Event Management
    β”œβ”€β”€ Offline Storage
    └── File Handling

Read Architecture Guide β†’

πŸ”„ Comparison with react-admin

Feature react-admin flutter_adminpanel
Framework React (Web) Flutter (Cross-platform)
Language JavaScript/TypeScript Dart
Data Providers Multiple Universal Adapter System
UI Components Material-UI Material Design 3
Platform Web only Web, Mobile, Desktop
Type Safety TypeScript Dart (built-in)
Offline Support Limited Built-in with RADA

🀝 Contributing

We welcome contributions! See our GitHub repository for:

πŸ“„ License

MIT License - see LICENSE file for details.

πŸ™ Credits

Inspired by react-admin by Marmelab.

πŸ“ž Support


Made with ❀️ by the Flutter community