bloom_admin library
Automatic server-rendered HTML administration interface for Bloom applications.
Modeled on djangors-admin and Django's Admin interface, bloom_admin provides
introspective form and changelist generation from ORM metadata, real SQL database pagination,
auto-escaping template rendering, and cryptographic HMAC-SHA256 CSRF verification.
Example usage:
import 'package:bloom_server/bloom_server.dart';
import 'package:bloom_db/bloom_db.dart';
import 'package:bloom_admin/bloom_admin.dart';
void main() async {
// 1. Initialize router and admin site
final router = BloomApiRouter();
final adminSite = BloomAdminSite()
.withSiteHeader('My Bloom App Admin')
.withSiteTitle('Bloom Control Center');
// 2. Register model with customized admin settings
adminSite.register<Article>(
meta: Article.meta,
fromRow: Article.fromRow,
config: const BloomModelAdminConfig(
listDisplay: ['id', 'title', 'isPublished'],
searchFields: ['title', 'content'],
listFilter: ['isPublished'],
listEditable: ['title'],
),
);
// 3. Mount admin routes under /admin
final db = Database(config: DatabaseConfig(url: 'sqlite::memory:'));
adminSite.mount(router, db: db, basePath: '/admin');
// 4. Start serving HTTP requests
await router.serve(port: 8080);
}
Classes
- AdminCsrf
-
Cryptographic CSRF token manager for
bloom_admin. - AdminTemplate
- Base class for template evaluation and rendering.
- BaseTemplate
-
Base layout HTML template for
bloom_admin. - BloomAdminAction
- Bulk admin action definition.
- BloomAdminSite
- Central administration site registry managing registered models and mounting admin routes.
- BloomChangelistPage
- Struct containing page data for a model's changelist view.
- BloomInlineConfig
- Configuration for inline child model display on admin forms.
-
BloomModelAdmin<
T extends Model> - Pluggable administration interface for managing ORM models.
- BloomModelAdminConfig
- Configuration options for custom model admin registration.
- BloomRelatedObjectSummary
- Summary of related objects affected by a deletion action.
- BloomSiteBranding
- Branding customization for the Bloom admin interface.
- BulkDeleteConfirmTemplate
- Bulk Delete Confirmation HTML template.
- ChangelistTemplate
- Changelist / Table HTML template.
-
DefaultBloomModelAdmin<
T extends Model> -
Default implementation of BloomModelAdmin for model
T. - DeleteConfirmTemplate
- Delete Confirmation HTML template.
- EditFormTemplate
- Edit/Add Form HTML template.
- IndexTemplate
- Index / Dashboard HTML template.
- SafeHtml
-
Safe-by-default server-side HTML rendering engine for
bloom_admin.
Constants
- changelistPerPage → const int
- Default number of items displayed per page on admin changelist views.
Functions
-
addGetView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required BloomSiteBranding branding, required AdminCsrf csrf}) → Future<BloomResponse> -
HTTP GET handler for rendering the model creation form (
/:app/:model/add/). -
addPostView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required BloomSiteBranding branding, required AdminCsrf csrf}) → Future<BloomResponse> -
HTTP POST handler for processing a new model creation form submission (
/:app/:model/add/). -
buildQueryString(
Map< String, String?> pairs) → String -
Builds a
?key=valuequery string from a map of parameter pairs. -
bulkActionView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required AdminCsrf csrf}) → Future<BloomResponse> - HTTP POST handler for executing custom or bulk actions selected on the changelist table.
-
bulkDeletePostView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required BloomSiteBranding branding, required AdminCsrf csrf}) → Future<BloomResponse> -
HTTP POST handler for rendering bulk delete confirmation or executing bulk deletion (
/:app/:model/bulk-delete/). -
changeGetView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required BloomSiteBranding branding, required AdminCsrf csrf}) → Future<BloomResponse> -
HTTP GET handler for rendering the model modification form (
/:app/:model/:pk/change/). -
changelistView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required BloomSiteBranding branding, required AdminCsrf csrf}) → Future<BloomResponse> - HTTP GET handler for rendering the model changelist table view.
-
changePostView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required BloomSiteBranding branding, required AdminCsrf csrf}) → Future<BloomResponse> -
HTTP POST handler for saving updates submitted from a model edit form (
/:app/:model/:pk/change/). -
csvEscapeField(
String s) → String - Escapes a CSV field string according to RFC 4180 rules.
-
deleteGetView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required BloomSiteBranding branding, required AdminCsrf csrf}) → Future<BloomResponse> -
HTTP GET handler for rendering the single-object deletion confirmation page (
/:app/:model/:pk/delete/). -
deletePostView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required AdminCsrf csrf}) → Future<BloomResponse> -
HTTP POST handler for executing single-object deletion (
/:app/:model/:pk/delete/). -
exportCsvView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db}) → Future<BloomResponse> - HTTP GET handler for exporting filtered model records as a CSV attachment.
-
htmlEscape(
String input) → String - Helper extension or function for HTML string escaping.
-
parseFieldValue(
FieldMeta field, String? raw) → (dynamic, String?) -
Parses and validates a form string input according to a
FieldMetaspecification. -
parseRelationValue(
RelationMeta relation, String? raw) → (dynamic, String?) - Parses and validates a form string input for a relation foreign key.
-
rowsToCsv(
List< String> columns, List<List< rows) → StringString> > -
Formats changelist
columnsheaders androwsdata into a standard CSV string. -
saveChangelistView(
{required BloomRequest request, required BloomModelAdmin< Model> admin, required DbExecutor db, required AdminCsrf csrf}) → Future<BloomResponse> - HTTP POST handler for saving multi-row inline edits from the changelist table.
-
urlEncodeQueryValue(
String s) → String - Percent-encodes a value for query parameters.