xreate custome speed dial

This commit is contained in:
2025-04-10 08:09:42 +02:00
parent ed7fb30932
commit 88fd92be79
3 changed files with 86 additions and 0 deletions

View File

@@ -1,3 +1,4 @@
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_packages/mih_home/components/mih_app_drawer.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart';
import 'package:flutter/material.dart';
@@ -9,6 +10,7 @@ class MihApp extends StatefulWidget {
final MihAppTools appTools;
final List<Widget> appBody;
final MIHAppDrawer? actionDrawer;
final MihFloatingMenu? appFloatingMenu;
int selectedbodyIndex;
final Function(int) onIndexChange;
MihApp({
@@ -19,6 +21,7 @@ class MihApp extends StatefulWidget {
this.actionDrawer,
required this.selectedbodyIndex,
required this.onIndexChange,
this.appFloatingMenu,
});
@override
@@ -63,6 +66,7 @@ class _MihAppState extends State<MihApp> {
onTap: unfocusAll,
child: Scaffold(
drawer: widget.actionDrawer,
floatingActionButton: widget.appFloatingMenu,
body: SafeArea(
child: Container(
width: screenSize.width,

View File

@@ -0,0 +1,40 @@
import 'package:flutter/material.dart';
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart';
class MihFloatingMenu extends StatefulWidget {
final List<SpeedDialChild> children;
const MihFloatingMenu({
super.key,
required this.children,
});
@override
State<MihFloatingMenu> createState() => _MihFloatingMenuState();
}
class _MihFloatingMenuState extends State<MihFloatingMenu> {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.only(
right: 5.0,
bottom: 5.0,
),
child: SpeedDial(
animatedIcon: AnimatedIcons.menu_close,
activeIcon: Icons.close,
backgroundColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
activeBackgroundColor:
MzanziInnovationHub.of(context)!.theme.errorColor(),
foregroundColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
overlayColor: Colors.black,
overlayOpacity: 0,
children: widget.children,
onOpen: () => debugPrint('OPENING DIAL'),
onClose: () => debugPrint('DIAL CLOSED'),
),
);
}
}

View File

@@ -1,3 +1,4 @@
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_single_child_scroll.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app.dart';
@@ -6,6 +7,7 @@ import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_tools.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_window.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih-app_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_floating_menu.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart';
import 'package:mzansi_innovation_hub/mih_objects/arguments.dart';
import 'package:flutter/material.dart';
@@ -183,6 +185,24 @@ class _PackageTestState extends State<PackageTest> {
),
),
const SizedBox(height: 10),
MihFloatingMenu(children: [
SpeedDialChild(
child: Icon(
Icons.add,
color:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Add",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
labelStyle: TextStyle(
color:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
)
]),
Container(
color: Colors.black,
width: 200,
@@ -231,6 +251,28 @@ class _PackageTestState extends State<PackageTest> {
appTools: getTools(),
appBody: getToolBody(),
selectedbodyIndex: _selcetedIndex,
appFloatingMenu: MihFloatingMenu(
children: [
SpeedDialChild(
child: Icon(
Icons.add,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
label: "Add",
labelBackgroundColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
labelStyle: TextStyle(
fontWeight: FontWeight.bold,
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
),
backgroundColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
onTap: () {
showFullScreenWindow();
},
)
],
),
onIndexChange: (newValue) {
setState(() {
_selcetedIndex = newValue;