From 44f7cd4255ff3a39f38742e8c7557010819ab082 Mon Sep 17 00:00:00 2001 From: Yasien Mac Mini Date: Thu, 17 Apr 2025 12:01:41 +0200 Subject: [PATCH] Update window widget --- .../mih_package_components/mih_app_tile.dart | 10 +- .../mih_app_window.dart | 212 +++++++---------- .../mih_floating_menu.dart | 3 + .../test/package_test.dart | 144 +----------- .../test/package_tools/package_tool_one.dart | 157 ++++++++++--- .../test/package_tools/package_tool_two.dart | 57 +++++ .../mzansi_ai/package_tools/ai_chat.dart | 217 +++++++++--------- 7 files changed, 388 insertions(+), 412 deletions(-) create mode 100644 Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_two.dart diff --git a/Frontend/lib/mih_components/mih_package_components/mih_app_tile.dart b/Frontend/lib/mih_components/mih_package_components/mih_app_tile.dart index 0651c6de..f2f0bd55 100644 --- a/Frontend/lib/mih_components/mih_package_components/mih_app_tile.dart +++ b/Frontend/lib/mih_components/mih_package_components/mih_app_tile.dart @@ -35,15 +35,13 @@ class _MihAppTileState extends State { return MihAppWindow( fullscreen: false, windowTitle: widget.appName, - windowTools: const [], + // windowTools: const [], onWindowTapClose: () { Navigator.pop(context); }, - windowBody: [ - MIHYTVideoPlayer( - videoYTLink: widget.ytVideoID!, - ), - ], + windowBody: MIHYTVideoPlayer( + videoYTLink: widget.ytVideoID!, + ), ); }, ); diff --git a/Frontend/lib/mih_components/mih_package_components/mih_app_window.dart b/Frontend/lib/mih_components/mih_package_components/mih_app_window.dart index da0aa305..5359c397 100644 --- a/Frontend/lib/mih_components/mih_package_components/mih_app_window.dart +++ b/Frontend/lib/mih_components/mih_package_components/mih_app_window.dart @@ -1,17 +1,19 @@ import 'package:flutter/material.dart'; -import '../../main.dart'; +import 'package:mzansi_innovation_hub/main.dart'; class MihAppWindow extends StatefulWidget { final String windowTitle; - final List windowBody; - final List windowTools; + final Widget windowBody; + final Widget? windowTools; + // final List menuOptions; final void Function() onWindowTapClose; final bool fullscreen; const MihAppWindow({ super.key, required this.fullscreen, required this.windowTitle, - required this.windowTools, + this.windowTools, + // required this.menuOptions, required this.onWindowTapClose, required this.windowBody, }); @@ -51,139 +53,45 @@ class _MihAppWindowState extends State { } } - Widget getWidnowClose() { + Widget getWindowHeader() { return Container( - alignment: Alignment.centerRight, - child: IconButton( - onPressed: widget.onWindowTapClose, - icon: Icon( - Icons.close, - color: MzanziInnovationHub.of(context)!.theme.errorColor(), - size: 35, - ), - ), - ); - } - - Widget getWidnowTools() { - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - children: widget.windowTools, - ); - } - - Widget getWidnowTitle() { - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: Text( - widget.windowTitle, - textAlign: TextAlign.center, - overflow: TextOverflow.ellipsis, - style: TextStyle( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - fontSize: windowTitleSize, - fontWeight: FontWeight.bold, + // color: Colors.green, + alignment: Alignment.center, + height: 50, + child: Row( + children: [ + widget.windowTools != null ? widget.windowTools! : Container(), + Expanded( + child: Container( + padding: EdgeInsets.symmetric(horizontal: 15), + // color: Colors.pink, + child: Text( + widget.windowTitle, + textAlign: TextAlign.left, + style: TextStyle( + fontSize: windowTitleSize, + fontWeight: FontWeight.bold, + color: + MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), + ), ), ), - ), - ], - ); - } - - Widget getWidnowHeader() { - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - getWidnowTools(), - Expanded( - flex: 2, - child: getWidnowTitle(), - ), - getWidnowClose(), - ], - ); - } - - Widget getWidnowBody() { - if (widget.fullscreen) { - return Expanded( - child: Padding( - padding: const EdgeInsets.all(10.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: widget.windowBody, + Container( + // color: Colors.white, + alignment: Alignment.center, + child: IconButton( + iconSize: 35, + onPressed: () { + widget.onWindowTapClose(); + }, + icon: Icon( + Icons.close, + color: MzanziInnovationHub.of(context)!.theme.errorColor(), + ), + ), ), - ), - ); - } else { - return Padding( - padding: const EdgeInsets.all(10.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: widget.windowBody, - ), - ); - } - } - - Widget createWindow(Widget header, Widget body) { - Widget visibleItems; - if (widget.fullscreen) { - visibleItems = Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - header, - //const Divider(), - body, ], - ); - } else { - visibleItems = SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - header, - //const Divider(), - body, - ], - ), - ); - } - return Dialog( - insetPadding: EdgeInsets.symmetric( - horizontal: horizontralWindowPadding, - vertical: vertticalWindowPadding, - ), - insetAnimationCurve: Easing.emphasizedDecelerate, - insetAnimationDuration: Durations.short1, - child: Container( - //padding: const EdgeInsets.all(10), - width: windowWidth, - //height: windowHeight, - decoration: BoxDecoration( - color: MzanziInnovationHub.of(context)!.theme.primaryColor(), - borderRadius: BorderRadius.circular(25.0), - border: Border.all( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - width: 5.0), - ), - child: visibleItems, ), ); } @@ -206,9 +114,43 @@ class _MihAppWindowState extends State { height = size.height; }); checkScreenSize(); - return createWindow( - getWidnowHeader(), - getWidnowBody(), + return Dialog( + insetPadding: EdgeInsets.symmetric( + horizontal: horizontralWindowPadding, + vertical: vertticalWindowPadding, + ), + insetAnimationCurve: Easing.emphasizedDecelerate, + insetAnimationDuration: Durations.short1, + child: Container( + decoration: BoxDecoration( + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + borderRadius: BorderRadius.circular(25.0), + border: Border.all( + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + width: 5.0), + ), + child: widget.fullscreen + ? Column( + mainAxisSize: MainAxisSize.max, + children: [ + getWindowHeader(), + Expanded(child: widget.windowBody), + ], + ) + : Column( + mainAxisSize: MainAxisSize.min, + children: [ + getWindowHeader(), + Padding( + padding: const EdgeInsets.only( + left: 15, + right: 15, + bottom: 15, + ), + child: widget.windowBody), + ], + ), + ), ); } } diff --git a/Frontend/lib/mih_components/mih_package_components/mih_floating_menu.dart b/Frontend/lib/mih_components/mih_package_components/mih_floating_menu.dart index eea4ff96..cbab49de 100644 --- a/Frontend/lib/mih_components/mih_package_components/mih_floating_menu.dart +++ b/Frontend/lib/mih_components/mih_package_components/mih_floating_menu.dart @@ -5,11 +5,13 @@ import 'package:mzansi_innovation_hub/main.dart'; class MihFloatingMenu extends StatefulWidget { final IconData? icon; final AnimatedIconData? animatedIcon; + final SpeedDialDirection? direction; final List children; const MihFloatingMenu({ super.key, this.icon, this.animatedIcon, + this.direction, required this.children, }); @@ -28,6 +30,7 @@ class _MihFloatingMenuState extends State { child: SpeedDial( icon: widget.icon, animatedIcon: widget.animatedIcon, + direction: widget.direction ?? SpeedDialDirection.up, activeIcon: Icons.close, backgroundColor: MzanziInnovationHub.of(context)!.theme.secondaryColor(), diff --git a/Frontend/lib/mih_components/mih_package_components/test/package_test.dart b/Frontend/lib/mih_components/mih_package_components/test/package_test.dart index 9069f807..a91025a1 100644 --- a/Frontend/lib/mih_components/mih_package_components/test/package_test.dart +++ b/Frontend/lib/mih_components/mih_package_components/test/package_test.dart @@ -1,14 +1,10 @@ -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'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_app_alert.dart'; 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_components/mih_package_components/test/package_tools/package_tool_one.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_package_components/test/package_tools/package_tool_two.dart'; import 'package:mzansi_innovation_hub/mih_objects/arguments.dart'; import 'package:flutter/material.dart'; @@ -38,12 +34,12 @@ class _PackageTestState extends State { MihAppTools getTools() { Map temp = Map(); - temp[const Icon(Icons.arrow_back)] = () { + temp[const Icon(Icons.inbox)] = () { setState(() { _selcetedIndex = 0; }); }; - temp[const Icon(Icons.arrow_forward)] = () { + temp[const Icon(Icons.outbond)] = () { setState(() { _selcetedIndex = 1; }); @@ -113,134 +109,10 @@ class _PackageTestState extends State { ); } - void showFullScreenWindow() { - showDialog( - context: context, - builder: (context) { - return MihAppWindow( - fullscreen: true, - windowTitle: "Test", - windowTools: const [], - onWindowTapClose: () { - Navigator.pop(context); - }, - windowBody: [ - Text( - "Window test", - style: TextStyle( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - fontSize: 15, - fontWeight: FontWeight.bold, - ), - ) - ], - ); - }, - ); - } - - void showNormalWindow() { - showDialog( - context: context, - builder: (context) { - return MihAppWindow( - fullscreen: false, - windowTitle: "Test", - windowTools: const [], - onWindowTapClose: () { - Navigator.pop(context); - }, - windowBody: [ - Text( - "Window test", - style: TextStyle( - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - fontSize: 15, - fontWeight: FontWeight.bold, - ), - ) - ], - ); - }, - ); - } - - List getToolBody() { - List toolBodies = [ - MihAppToolBody( - borderOn: true, - bodyItem: MihSingleChildScroll( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - children: [ - Text( - "Hello", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, - color: - MzanziInnovationHub.of(context)!.theme.secondaryColor(), - ), - ), - 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(), - onTap: () {}, - ) - ]), - Container( - color: Colors.black, - width: 200, - height: 200, - padding: EdgeInsets.zero, - alignment: Alignment.center, - child: IconButton.filled( - onPressed: () {}, - icon: Icon( - MihIcons.mihLogo, - color: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - ), - ), - ) - ], - ), - ), - ), - MihAppToolBody( - borderOn: false, - bodyItem: Column( - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - children: [ - Text( - "World!!!", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), - ), - ), - ], - ), - ), + List getToolBody() { + List toolBodies = [ + const PackageToolOne(), + const PackageToolTwo(), ]; return toolBodies; } diff --git a/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_one.dart b/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_one.dart index 73b857c1..bcaea3fb 100644 --- a/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_one.dart +++ b/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_one.dart @@ -1,7 +1,10 @@ import 'package:flutter/material.dart'; +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_tool_body.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_floating_menu.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; class PackageToolOne extends StatefulWidget { @@ -12,6 +15,40 @@ class PackageToolOne extends StatefulWidget { } class _PackageToolOneState extends State { + void showTestFullWindow() { + showDialog( + context: context, + barrierDismissible: false, + builder: (context) { + return MihAppWindow( + fullscreen: true, + windowTitle: "Test Full", + onWindowTapClose: () { + Navigator.of(context).pop(); + }, + windowBody: Text("Testing Window Body"), + ); + }, + ); + } + + void showTestWindow() { + showDialog( + context: context, + barrierDismissible: false, + builder: (context) { + return MihAppWindow( + fullscreen: false, + windowTitle: "Test No Full", + onWindowTapClose: () { + Navigator.of(context).pop(); + }, + windowBody: Text("Testing Window Body"), + ); + }, + ); + } + @override Widget build(BuildContext context) { return MihAppToolBody( @@ -21,40 +58,98 @@ class _PackageToolOneState extends State { } Widget getBody() { - return MihAppToolBody( - borderOn: true, - bodyItem: MihSingleChildScroll( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.max, - children: [ - Text( - "Hello", - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 25, - fontWeight: FontWeight.bold, - color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + return Stack( + children: [ + MihSingleChildScroll( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "Hello", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + ), + ), + ], ), - ), - const SizedBox(height: 10), - Container( - color: Colors.black, - width: 200, - height: 200, - padding: EdgeInsets.zero, - alignment: Alignment.center, - child: IconButton.filled( - onPressed: () {}, - icon: Icon( - MihIcons.mihLogo, - color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + const SizedBox(height: 10), + Container( + color: Colors.black, + width: 200, + height: 200, + padding: EdgeInsets.zero, + alignment: Alignment.center, + child: IconButton.filled( + onPressed: () {}, + icon: Icon( + MihIcons.mihLogo, + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), ), - ), - ) - ], + ) + ], + ), ), - ), + Positioned( + right: 0, + bottom: 0, + child: MihFloatingMenu( + animatedIcon: AnimatedIcons.menu_close, + children: [ + SpeedDialChild( + child: Icon( + Icons.add, + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Show New Window", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + fontWeight: FontWeight.bold, + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () { + showTestWindow(); + }, + ), + SpeedDialChild( + child: Icon( + Icons.add, + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + label: "Show New Full Window", + labelBackgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + labelStyle: TextStyle( + color: + MzanziInnovationHub.of(context)!.theme.primaryColor(), + fontWeight: FontWeight.bold, + ), + backgroundColor: + MzanziInnovationHub.of(context)!.theme.successColor(), + onTap: () { + showTestFullWindow(); + }, + ), + ]), + ) + ], ); } } diff --git a/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_two.dart b/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_two.dart new file mode 100644 index 00000000..593fb041 --- /dev/null +++ b/Frontend/lib/mih_components/mih_package_components/test/package_tools/package_tool_two.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.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_tool_body.dart'; +import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_icons.dart'; + +class PackageToolTwo extends StatefulWidget { + const PackageToolTwo({super.key}); + + @override + State createState() => _PackageToolTwoState(); +} + +class _PackageToolTwoState extends State { + @override + Widget build(BuildContext context) { + return MihAppToolBody( + borderOn: false, + bodyItem: getBody(), + ); + } + + Widget getBody() { + return MihSingleChildScroll( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + "World", + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.bold, + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), + ), + const SizedBox(height: 10), + Container( + color: Colors.black, + width: 200, + height: 200, + padding: EdgeInsets.zero, + alignment: Alignment.center, + child: IconButton.filled( + onPressed: () {}, + icon: Icon( + MihIcons.mihLogo, + color: MzanziInnovationHub.of(context)!.theme.primaryColor(), + ), + ), + ) + ], + ), + ); + } +} diff --git a/Frontend/lib/mih_packages/mzansi_ai/package_tools/ai_chat.dart b/Frontend/lib/mih_packages/mzansi_ai/package_tools/ai_chat.dart index b8762cb1..9739fc44 100644 --- a/Frontend/lib/mih_packages/mzansi_ai/package_tools/ai_chat.dart +++ b/Frontend/lib/mih_packages/mzansi_ai/package_tools/ai_chat.dart @@ -126,132 +126,141 @@ class _AiChatState extends State { return MihAppWindow( fullscreen: false, windowTitle: 'Mzansi AI Thoughts', - windowTools: [ - Visibility( - visible: _aiThinking == false, - child: Padding( - padding: const EdgeInsets.all(5.0), - child: Container( - //color: MzanziInnovationHub.of(context)!.theme.successColor(), - decoration: BoxDecoration( - color: - MzanziInnovationHub.of(context)!.theme.successColor(), - borderRadius: const BorderRadius.all( - Radius.circular(100), + windowTools: Row( + children: [ + Visibility( + visible: _aiThinking == false, + child: Padding( + padding: const EdgeInsets.all(5.0), + child: Container( + //color: MzanziInnovationHub.of(context)!.theme.successColor(), + decoration: BoxDecoration( + color: MzanziInnovationHub.of(context)! + .theme + .successColor(), + borderRadius: const BorderRadius.all( + Radius.circular(100), + ), ), - ), - child: IconButton( - color: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - onPressed: () async { - print("Start TTS now"); + child: IconButton( + color: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + onPressed: () async { + print("Start TTS now"); - _speakText(snapshot.requireData); - }, - icon: const Icon(Icons.volume_up), - ), - ), - ), - ), - Visibility( - visible: _aiThinking == true, - child: Padding( - padding: const EdgeInsets.all(5.0), - child: Container( - // color: MzanziInnovationHub.of(context)!.theme.errorColor(), - decoration: BoxDecoration( - color: - MzanziInnovationHub.of(context)!.theme.errorColor(), - borderRadius: const BorderRadius.all( - Radius.circular(100), + _speakText(snapshot.requireData); + }, + icon: const Icon(Icons.volume_up), ), ), - child: IconButton( - color: - MzanziInnovationHub.of(context)!.theme.primaryColor(), - onPressed: () { - //print("Start TTS now"); - _flutterTts.stop(); - }, - icon: const Icon(Icons.volume_off), + ), + ), + Visibility( + visible: _aiThinking == true, + child: Padding( + padding: const EdgeInsets.all(5.0), + child: Container( + // color: MzanziInnovationHub.of(context)!.theme.errorColor(), + decoration: BoxDecoration( + color: + MzanziInnovationHub.of(context)!.theme.errorColor(), + borderRadius: const BorderRadius.all( + Radius.circular(100), + ), + ), + child: IconButton( + color: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + onPressed: () { + //print("Start TTS now"); + _flutterTts.stop(); + }, + icon: const Icon(Icons.volume_off), + ), ), ), ), - ), - ], + ], + ), onWindowTapClose: () { _captureAIResponse(snapshot.requireData); _flutterTts.stop(); Navigator.of(context).pop(); }, - windowBody: [ - Stack( - children: [ - Text( - snapshot.requireData, - textAlign: TextAlign.left, - style: TextStyle( - color: MzanziInnovationHub.of(context)! - .theme - .secondaryColor(), - fontSize: _chatFrontSize, - fontWeight: FontWeight.bold, - ), - ), - Positioned( - bottom: 0, - right: 0, - child: Visibility( - visible: _aiThinking == false, - child: IconButton.filled( - iconSize: 25, - autofocus: true, - onPressed: () { - _captureAIResponse(snapshot.requireData); - _flutterTts.stop(); - Navigator.of(context).pop(); - }, - focusColor: MzanziInnovationHub.of(context)! - .theme - .successColor(), - icon: Icon( - Icons.check, - color: MzanziInnovationHub.of(context)! - .theme - .primaryColor(), + windowBody: Column( + children: [ + Stack( + children: [ + Column( + children: [ + Text( + snapshot.requireData, + textAlign: TextAlign.left, + style: TextStyle( + color: MzanziInnovationHub.of(context)! + .theme + .secondaryColor(), + fontSize: _chatFrontSize, + fontWeight: FontWeight.bold, + ), ), - ), - - // MIHButton( - // onTap: () { - // _captureAIResponse(snapshot.requireData); - // Navigator.of(context).pop(); - // }, - // buttonText: "Continue", - // buttonColor: MzanziInnovationHub.of(context)! - // .theme - // .successColor(), - // textColor: MzanziInnovationHub.of(context)! - // .theme - // .primaryColor(), - // ), + ], ), - ), - ], - ), - ], + Positioned( + bottom: 0, + right: 0, + child: Visibility( + visible: _aiThinking == false, + child: IconButton.filled( + iconSize: 25, + autofocus: true, + onPressed: () { + _captureAIResponse(snapshot.requireData); + _flutterTts.stop(); + Navigator.of(context).pop(); + }, + focusColor: MzanziInnovationHub.of(context)! + .theme + .successColor(), + icon: Icon( + Icons.check, + color: MzanziInnovationHub.of(context)! + .theme + .primaryColor(), + ), + ), + + // MIHButton( + // onTap: () { + // _captureAIResponse(snapshot.requireData); + // Navigator.of(context).pop(); + // }, + // buttonText: "Continue", + // buttonColor: MzanziInnovationHub.of(context)! + // .theme + // .successColor(), + // textColor: MzanziInnovationHub.of(context)! + // .theme + // .primaryColor(), + // ), + ), + ), + ], + ), + ], + ), ); } else { return MihAppWindow( fullscreen: false, windowTitle: 'Mzansi AI Thoughts', - windowTools: [], + // windowTools: [], onWindowTapClose: () { Navigator.of(context).pop(); }, - windowBody: const [ - Mihloadingcircle(), - ], + windowBody: Mihloadingcircle(), ); } },