Add floating action to Mzansi AI
This commit is contained in:
@@ -1,11 +1,13 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
|
||||||
import 'package:mzansi_innovation_hub/main.dart';
|
import 'package:mzansi_innovation_hub/main.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart';
|
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_text_input.dart';
|
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_text_input.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_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_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_pop_up_messages/mih_loading_circle.dart';
|
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_env/env.dart';
|
import 'package:mzansi_innovation_hub/mih_env/env.dart';
|
||||||
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
|
import 'package:mzansi_innovation_hub/mih_objects/app_user.dart';
|
||||||
@@ -69,6 +71,7 @@ class _AiChatState extends State<AiChat> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _handleSendPressed(types.PartialText message) {
|
void _handleSendPressed(types.PartialText message) {
|
||||||
|
FocusScope.of(context).unfocus();
|
||||||
final textMessage = types.TextMessage(
|
final textMessage = types.TextMessage(
|
||||||
author: _user,
|
author: _user,
|
||||||
createdAt: DateTime.now().millisecondsSinceEpoch,
|
createdAt: DateTime.now().millisecondsSinceEpoch,
|
||||||
@@ -349,7 +352,7 @@ class _AiChatState extends State<AiChat> {
|
|||||||
return Visibility(
|
return Visibility(
|
||||||
visible: value,
|
visible: value,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(5.0),
|
padding: const EdgeInsets.all(10.0),
|
||||||
child: Align(
|
child: Align(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
child: FittedBox(
|
child: FittedBox(
|
||||||
@@ -615,95 +618,169 @@ class _AiChatState extends State<AiChat> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MihAppToolBody(
|
return MihAppToolBody(
|
||||||
borderOn: false,
|
borderOn: false,
|
||||||
bodyItem: Column(
|
bodyItem: getBody(),
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
);
|
||||||
mainAxisSize: MainAxisSize.max,
|
}
|
||||||
children: [
|
|
||||||
Row(
|
Widget getBody() {
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
return Stack(
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
// Visibility(
|
||||||
|
// visible: _showModelOptions.value == true,
|
||||||
|
// child: IconButton.filled(
|
||||||
|
// iconSize: 20,
|
||||||
|
// onPressed: () {
|
||||||
|
// if (_showModelOptions.value == true) {
|
||||||
|
// setState(() {
|
||||||
|
// _showModelOptions.value = false;
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// setState(() {
|
||||||
|
// _showModelOptions.value = true;
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// icon: const Icon(
|
||||||
|
// Icons.settings,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
Expanded(
|
||||||
|
child: Text(
|
||||||
|
"Mzansi AI",
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 25,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: MzanziInnovationHub.of(context)!
|
||||||
|
.theme
|
||||||
|
.secondaryColor(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Expanded(
|
||||||
|
// child: Container(
|
||||||
|
// alignment: Alignment.centerRight,
|
||||||
|
// child: IconButton(
|
||||||
|
// onPressed: () {
|
||||||
|
// _resetChat();
|
||||||
|
// },
|
||||||
|
// icon: const Icon(Icons.refresh),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
_getSettings(),
|
||||||
|
Expanded(
|
||||||
|
child: GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
if (_showModelOptions.value == true) {
|
||||||
|
setState(() {
|
||||||
|
_showModelOptions.value = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: Chat(
|
||||||
|
messages: _messages,
|
||||||
|
// onAttachmentPressed: _handleAttachmentPressed,
|
||||||
|
// onMessageTap: _handleMessageTap,
|
||||||
|
// onPreviewDataFetched: _handlePreviewDataFetched,
|
||||||
|
onSendPressed: _handleSendPressed,
|
||||||
|
showUserAvatars: false,
|
||||||
|
showUserNames: false,
|
||||||
|
user: _user,
|
||||||
|
theme: getChatTheme(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
left: 0,
|
||||||
|
top: 0,
|
||||||
|
child: Visibility(
|
||||||
|
visible: _showModelOptions.value == true,
|
||||||
|
child: IconButton.filled(
|
||||||
|
iconSize: 20,
|
||||||
|
onPressed: () {
|
||||||
|
if (_showModelOptions.value == true) {
|
||||||
|
setState(() {
|
||||||
|
_showModelOptions.value = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setState(() {
|
||||||
|
_showModelOptions.value = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
icon: const Icon(
|
||||||
|
Icons.settings,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
right: 0,
|
||||||
|
bottom: 70,
|
||||||
|
child: MihFloatingMenu(
|
||||||
|
animatedIcon: AnimatedIcons.menu_close,
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
SpeedDialChild(
|
||||||
child: Container(
|
child: Icon(
|
||||||
alignment: Alignment.centerLeft,
|
Icons.refresh,
|
||||||
child: Row(
|
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
|
||||||
children: [
|
|
||||||
Visibility(
|
|
||||||
visible: _showModelOptions.value == false,
|
|
||||||
child: IconButton(
|
|
||||||
onPressed: () {
|
|
||||||
if (_showModelOptions.value == true) {
|
|
||||||
setState(() {
|
|
||||||
_showModelOptions.value = false;
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
setState(() {
|
|
||||||
_showModelOptions.value = true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
icon: const Icon(Icons.settings),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Visibility(
|
|
||||||
visible: _showModelOptions.value == true,
|
|
||||||
child: IconButton.filled(
|
|
||||||
onPressed: () {
|
|
||||||
if (_showModelOptions.value == true) {
|
|
||||||
setState(() {
|
|
||||||
_showModelOptions.value = false;
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
setState(() {
|
|
||||||
_showModelOptions.value = true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
icon: const Icon(Icons.settings),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
label: "New Chat",
|
||||||
Text(
|
labelBackgroundColor:
|
||||||
"Mzansi AI",
|
MzanziInnovationHub.of(context)!.theme.successColor(),
|
||||||
textAlign: TextAlign.center,
|
labelStyle: TextStyle(
|
||||||
style: TextStyle(
|
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
|
||||||
fontSize: 25,
|
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color:
|
|
||||||
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
|
|
||||||
),
|
),
|
||||||
|
backgroundColor:
|
||||||
|
MzanziInnovationHub.of(context)!.theme.successColor(),
|
||||||
|
onTap: () {
|
||||||
|
_resetChat();
|
||||||
|
},
|
||||||
),
|
),
|
||||||
Expanded(
|
SpeedDialChild(
|
||||||
child: Container(
|
child: Icon(
|
||||||
alignment: Alignment.centerRight,
|
Icons.settings,
|
||||||
child: IconButton(
|
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
|
||||||
onPressed: () {
|
|
||||||
_resetChat();
|
|
||||||
},
|
|
||||||
icon: const Icon(Icons.refresh),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
|
label: "Settings",
|
||||||
|
labelBackgroundColor:
|
||||||
|
MzanziInnovationHub.of(context)!.theme.successColor(),
|
||||||
|
labelStyle: TextStyle(
|
||||||
|
color: MzanziInnovationHub.of(context)!.theme.primaryColor(),
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
backgroundColor:
|
||||||
|
MzanziInnovationHub.of(context)!.theme.successColor(),
|
||||||
|
onTap: () {
|
||||||
|
if (_showModelOptions.value == true) {
|
||||||
|
setState(() {
|
||||||
|
_showModelOptions.value = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setState(() {
|
||||||
|
_showModelOptions.value = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
_getSettings(),
|
),
|
||||||
Expanded(
|
],
|
||||||
child: Chat(
|
|
||||||
messages: _messages,
|
|
||||||
// onAttachmentPressed: _handleAttachmentPressed,
|
|
||||||
// onMessageTap: _handleMessageTap,
|
|
||||||
// onPreviewDataFetched: _handlePreviewDataFetched,
|
|
||||||
onSendPressed: _handleSendPressed,
|
|
||||||
showUserAvatars: false,
|
|
||||||
showUserNames: false,
|
|
||||||
user: _user,
|
|
||||||
theme: getChatTheme(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user