A comprehensive Flutter admin panel library inspired by react-admin, with a universal adapter system for any data source.
Read the full documentation on GitBook β
- π¨ 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
- Installation Guide - Get started in 5 minutes
- Quick Start - Build your first admin panel
- Adapters Guide - Connect to any data source
- API Reference - Complete API documentation
- Examples - Working example application
- β REST API - Works with any RESTful backend
dependencies:
flutter_adminpanel: ^1.4.1
flutter pub get
π Full Installation Guide β
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));
}
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(),
),
],
);
}
}
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 β
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');
- Installation - Setup guide
- Quick Start - Build your first admin panel
- Core Concepts - Architecture overview
- Adapters Guide - Universal adapter system
- REST API - Generic REST API support
- Custom Providers - Create your own
- Event Management - Lifecycle management
- Onboarding System - User onboarding
- Analytics - Charts and dashboards
- Offline Mode - Caching and sync
- API Reference - Complete API docs
- Configuration - All config options
- Troubleshooting - Common issues
- Changelog - Version history
See the example directory for a complete admin panel with:
- REST API data provider
- Event management
- Onboarding flow
- File uploads
# Run unit tests
flutter test
# Run integration tests
cd example
flutter test integration_test/
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
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 |
We welcome contributions! See our GitHub repository for:
MIT License - see LICENSE file for details.
Made with β€οΈ by NativeMind