flutter_artist_dock_face 0.9.4 copy "flutter_artist_dock_face: ^0.9.4" to clipboard
flutter_artist_dock_face: ^0.9.4 copied to clipboard

An independent, high-performance, compact full-screen page layout featuring a fixed, non-expandable navigation dock without a topbar.

flutter_artist_dock_face #

A highly efficient, independent, and lightweight full-screen page layout for Flutter. It features a compact, fixed, and non-expandable sidebar navigation dock while completely omitting the topbar area, making it perfect for minimalist dashboards, terminals, and content-focused workspaces.

LIVE DEMO

Download Demo Source Code

FlutterArtist Dock Face Demo #

Features #

  • Zero Dependencies: Completely detached and decoupled from any external design token systems or style hubs.
  • Fixed Navigation Dock: Built explicitly for a non-expandable vertical panel layout that stays structural and predictable.
  • No Topbar Framework: Maximizes vertical viewport spaces by leaving the top layout open for content customization.
  • Fully Custom Color Presets: Includes a reactive mapping mechanism that natively supports dark mode switches and hand-picked branding adjustments.

Getting Started #

Add the package to your pubspec.yaml:

dependencies:
  flutter_artist_dock_face: ^lastest

Usage #

1. Define Your Custom Style #

Extend DockFaceScreen and implement the mandatory layout parameters. You can easily map custom hex colors or utilize the built-in factory design rules.

import 'package:flutter/material.dart';
import 'package:flutter_artist_dock_face/flutter_artist_dock_face.dart';

abstract class MyDockFaceScreen extends DockFaceScreen {
  final String currentRoute;

  const MyDockFaceScreen({super.key, required this.currentRoute});

  @override
  void onNavigateTo(BuildContext context, String route) {
    Navigator.of(context).pushReplacementNamed(route);
  }

  @override
  DockFaceStyle buildStyle(BuildContext context) {
    // Custom luxury dark navy branding block setup
    return const DockFaceStyle(
      scaffoldBackground: Color(0xFFF4F6FA),
      dockStyle: DockStyle(
        backgroundColor: Color(0xFF1E2541),
        iconColor: Color(0xFF94A3B8),
        textColor: Color(0xFFE2E8F0),
        drawerWidth: 75.0,
        topSpacing: 16.0,
        itemSpacing: 8.0,
        iconSize: 24.0,
        borderRadius: BorderRadius.all(Radius.circular(8)),
        hoverColor: Color(0x13FFFFFF),
        selectedColor: Color(0xFF2F3860),
        titleStyle: TextStyle(fontSize: 10, fontWeight: FontWeight.w500),
        itemMargin: EdgeInsets.symmetric(vertical: 4, horizontal: 6),
        itemPadding: EdgeInsets.symmetric(horizontal: 4, vertical: 8),
      ),
    );
  }

  @override
  Widget? buildLogo({required BuildContext context, required DockFaceStyle dockFaceStyle}) {
    return const Icon(Icons.palette_rounded, color: Colors.white, size: 28);
  }

  @override
  Widget? buildProfile({required BuildContext context, required DockFaceStyle dockFaceStyle}) {
    return const CircleAvatar(radius: 18, child: Text('FA'));
  }

  @override
  DockMenuItemModel? getDebugDockMenuItemModel() => null;

  @override
  DockMenuItemModel? getNotificationDockMenuItemModel() => null;

  @override
  DockMenuItemModel? getConfigurationDockMenuItemModel() => null;
}

2. Create Concrete Page Views #

Now you only need to override the main content pane widget using buildMainContent().

class DashboardScreen extends MyDockFaceScreen {
  const DashboardScreen({super.key}) : super(currentRoute: '/dashboard');

  @override
  Widget buildMainContent({
    required BuildContext context,
    required DockFaceStyle dockFaceStyle,
  }) {
    return Scaffold(
      backgroundColor: dockFaceStyle.scaffoldBackground,
      body: Center(
        child: Text(
          'Welcome to the Workspace!',
          style: TextStyle(color: dockFaceStyle.dockStyle.textColor),
        ),
      ),
    );
  }
}

Additional Information #

For issue reports, implementation feedback, or comprehensive design documentation, please visit the repository framework tracker at o7planning GitHub Organization.

0
likes
140
points
35
downloads

Documentation

API reference

Publisher

verified publishero7planning.org

Weekly Downloads

An independent, high-performance, compact full-screen page layout featuring a fixed, non-expandable navigation dock without a topbar.

Homepage

License

BSD-3-Clause (license)

Dependencies

flutter, just_the_tooltip, pointer_interceptor, shared_preferences, url_launcher

More

Packages that depend on flutter_artist_dock_face