flutter_overlay_support 1.0.0 copy "flutter_overlay_support: ^1.0.0" to clipboard
flutter_overlay_support: ^1.0.0 copied to clipboard

A lightweight, powerful, and adaptive overlay support package for Flutter. Features intelligent queueing, widget anchoring, future-based loaders, and zero dependencies.

example/lib/main.dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_overlay_support/flutter_overlay_support.dart';

import 'presentation/pages/home_page.dart';
import 'presentation/pages/multi_overlay_page.dart';
import 'presentation/pages/ime_page.dart';
import 'presentation/pages/new_features_page.dart';

void main() {
  debugDefaultTargetPlatformOverride = TargetPlatform.android;
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return OverlaySupport.global(
      theme: const OverlaySupportThemeData(
        glassmorphismConfig: GlassmorphismTheme(
          blur: 10,
          opacity: 0.1,
          color: Colors.white,
        ),
      ),
      child: MaterialApp(
        title: 'Flutter Overlay Support',
        debugShowCheckedModeBanner: false,
        theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple, brightness: Brightness.light),
          useMaterial3: true,
        ),
        darkTheme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple, brightness: Brightness.dark),
          useMaterial3: true,
        ),
        home: const _ExampleDrawer(),
      ),
    );
  }
}

class _ExampleDrawer extends StatefulWidget {
  const _ExampleDrawer();

  @override
  _ExampleDrawerState createState() => _ExampleDrawerState();
}

class _ExampleDrawerState extends State<_ExampleDrawer> {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      drawer: const Drawer(
        child: _NavigationTiles(),
      ),
      body: Stack(
        children: [
          const HomePage(),
          Positioned(
            top: MediaQuery.of(context).padding.top + 8,
            left: 16,
            child: CircleAvatar(
              backgroundColor: Theme.of(context).colorScheme.surface.withValues(alpha: 0.8),
              child: IconButton(
                icon: const Icon(Icons.menu),
                onPressed: () => _scaffoldKey.currentState?.openDrawer(),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

class _NavigationTiles extends StatelessWidget {
  const _NavigationTiles();

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        DrawerHeader(
          decoration: BoxDecoration(
            color: Theme.of(context).colorScheme.primaryContainer,
          ),
          child: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                const Icon(Icons.layers, size: 48),
                const SizedBox(height: 8),
                Text(
                  'Flutter Overlay Support',
                  style: Theme.of(context).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.bold),
                ),
              ],
            ),
          ),
        ),
        Expanded(
          child: ListView(
            padding: EdgeInsets.zero,
            children: [
              _buildTile(context, Icons.home_outlined, 'Home', const HomePage(), isHome: true),
              _buildTile(context, Icons.auto_awesome_outlined, 'Advanced Capabilities', const PageNewFeatures()),
              _buildTile(context, Icons.grid_view_outlined, 'Multi-Screen Support', const PageMultiOverlaySupport()),
              _buildTile(context, Icons.keyboard_outlined, 'IME / Keyboard Interaction', const PageWithIme()),
            ],
          ),
        ),
        const Padding(
          padding: EdgeInsets.all(16.0),
          child: Text('Version 1.0.0', style: TextStyle(color: Colors.grey, fontSize: 12)),
        ),
      ],
    );
  }

  Widget _buildTile(BuildContext context, IconData icon, String title, Widget page, {bool isHome = false}) {
    return ListTile(
      leading: Icon(icon),
      title: Text(title),
      onTap: () {
        Navigator.pop(context);
        if (!isHome) {
          Navigator.push(context, MaterialPageRoute(builder: (context) => page));
        }
      },
    );
  }
}
1
likes
160
points
108
downloads

Documentation

API reference

Publisher

verified publishershirsh.dev

Weekly Downloads

A lightweight, powerful, and adaptive overlay support package for Flutter. Features intelligent queueing, widget anchoring, future-based loaders, and zero dependencies.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter

More

Packages that depend on flutter_overlay_support