based_dock_scaffold 1.0.2
based_dock_scaffold: ^1.0.2 copied to clipboard
A Based Dock Scaffold Widget, Which Helps You Create A Scaffold With A IPad-Like Dock
import 'package:flutter/material.dart';
import 'package:based_dock_scaffold/based_dock_scaffold.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Based Dock Scaffold Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.deepPurple,
),
useMaterial3: true,
),
home: BasedDockScaffold(
appBar: AppBar(
title: const Text('Based Dock Scaffold'),
),
body: const Center(
child: Wrap(
spacing: 8,
direction: Axis.vertical,
crossAxisAlignment: WrapCrossAlignment.center,
children: [
Text('Pull Up The Dock!'),
ShowButton(),
Text('Click Outside To Hide The Dock!'),
],
),
),
dockChild: const Wrap(
spacing: 8,
alignment: WrapAlignment.center,
runAlignment: WrapAlignment.center,
children: [
ErrorShowButton(),
],
),
),
);
}
}
class ErrorShowButton extends StatelessWidget {
const ErrorShowButton({super.key});
@override
Widget build(BuildContext context) {
return IconButton(
tooltip:
'**_DO NOT_** use `BasedDockScaffold.of(context)` in the subtree of `dockChild`',
onPressed: () {
final state = BasedDockScaffold.of(context);
state.showDock();
},
icon: const Icon(Icons.error, color: Colors.red),
);
}
}
class ShowButton extends StatelessWidget {
const ShowButton({
super.key,
});
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () {
final state = BasedDockScaffold.of(context);
state.showDock();
},
child: const Text('Show Up The Dock!'),
);
}
}