Updated dark theme borders

This commit is contained in:
JHubi1 2024-08-22 22:20:21 +02:00
parent 8c122526ef
commit 13e266a3c9
No known key found for this signature in database
GPG Key ID: 7BF82570CBBBD050
9 changed files with 268 additions and 327 deletions

View File

@ -66,6 +66,7 @@ String? chatUuid;
bool chatAllowed = true;
String hoveredChat = "";
GlobalKey<ChatState>? chatKey;
final user = types.User(id: const Uuid().v4());
final assistant = types.User(id: const Uuid().v4());
@ -535,23 +536,14 @@ class _MainAppState extends State<MainApp> {
}
showModalBottomSheet(
context: context,
barrierColor: (Theme.of(context)
.brightness ==
Brightness.dark)
? Colors.grey
.withOpacity(0.2)
: null,
builder: (context) {
return Container(
decoration: (Theme.of(context)
.brightness ==
Brightness.dark)
? BoxDecoration(
border: Border.all(
color: Colors
.white),
borderRadius: const BorderRadius.only(
topLeft:
Radius.circular(
26),
topRight:
Radius.circular(
26)))
: null,
padding:
const EdgeInsets.only(
left: 16,
@ -942,6 +934,7 @@ class _MainAppState extends State<MainApp> {
constraints: const BoxConstraints(maxWidth: 1000),
child: Chat(
messages: messages,
key: chatKey,
textMessageBuilder: (p0,
{required messageWidth, required showName}) {
var white =
@ -1273,35 +1266,61 @@ class _MainAppState extends State<MainApp> {
}
showModalBottomSheet(
context: context,
barrierColor:
(Theme.of(context).brightness ==
Brightness.dark)
? Colors.grey.withOpacity(0.2)
: null,
builder: (context) {
return Container(
decoration: (Theme.of(context)
.brightness ==
Brightness.dark)
? BoxDecoration(
border: Border.all(
color:
Colors.white),
borderRadius:
const BorderRadius.only(
topLeft: Radius
.circular(
26),
topRight:
Radius.circular(
26)))
: null,
width: double.infinity,
padding: const EdgeInsets.only(
left: 16,
right: 16,
top: 16),
child:
Column(mainAxisSize: MainAxisSize.min, children: [
(prefs?.getBool(
"voiceModeEnabled") ??
false)
? SizedBox(
child: Column(
mainAxisSize:
MainAxisSize.min,
children: [
(prefs?.getBool(
"voiceModeEnabled") ??
false)
? SizedBox(
width: double
.infinity,
child: OutlinedButton
.icon(
onPressed:
() async {
selectionHaptic();
Navigator.of(context)
.pop();
setGlobalState =
setState;
settingsOpen =
true;
logoVisible =
false;
Navigator.of(context).push(MaterialPageRoute(
builder: (context) =>
const ScreenVoice()));
},
icon: const Icon(
Icons
.headphones_rounded),
label: Text(
AppLocalizations.of(context)!
.settingsTitleVoice)))
: const SizedBox
.shrink(),
(prefs?.getBool(
"voiceModeEnabled") ??
false)
? const SizedBox(
height: 8)
: const SizedBox
.shrink(),
SizedBox(
width:
double.infinity,
child: OutlinedButton
@ -1309,164 +1328,134 @@ class _MainAppState extends State<MainApp> {
onPressed:
() async {
selectionHaptic();
Navigator.of(
context)
.pop();
setGlobalState =
setState;
settingsOpen =
true;
logoVisible =
false;
Navigator.of(
context)
.push(MaterialPageRoute(
builder: (context) =>
const ScreenVoice()));
final result =
await ImagePicker()
.pickImage(
source: ImageSource
.camera,
);
if (result ==
null) {
return;
}
final bytes =
await result
.readAsBytes();
final image =
await decodeImageFromList(
bytes);
final message =
types
.ImageMessage(
author:
user,
createdAt:
DateTime.now()
.millisecondsSinceEpoch,
height: image
.height
.toDouble(),
id: const Uuid()
.v4(),
name: result
.name,
size: bytes
.length,
uri: result
.path,
width: image
.width
.toDouble(),
);
messages.insert(
0,
message);
setState(
() {});
selectionHaptic();
},
icon: const Icon(
Icons
.headphones_rounded),
.photo_camera_rounded),
label: Text(AppLocalizations.of(
context)!
.settingsTitleVoice)))
: const SizedBox.shrink(),
(prefs?.getBool(
"voiceModeEnabled") ??
false)
? const SizedBox(
height: 8)
: const SizedBox.shrink(),
SizedBox(
width: double.infinity,
child:
OutlinedButton.icon(
onPressed:
() async {
selectionHaptic();
Navigator.of(
context)
.pop();
final result =
await ImagePicker()
.pickImage(
source:
ImageSource
.camera,
);
if (result ==
null) {
return;
}
final bytes =
await result
.readAsBytes();
final image =
await decodeImageFromList(
bytes);
final message =
types
.ImageMessage(
author: user,
createdAt: DateTime
.now()
.millisecondsSinceEpoch,
height: image
.height
.toDouble(),
id: const Uuid()
.v4(),
name: result
.name,
size: bytes
.length,
uri: result
.path,
width: image
.width
.toDouble(),
);
messages.insert(
0, message);
setState(() {});
selectionHaptic();
},
icon: const Icon(Icons
.photo_camera_rounded),
label: Text(
AppLocalizations.of(
context)!
.takeImage))),
const SizedBox(height: 8),
SizedBox(
width: double.infinity,
child:
OutlinedButton.icon(
onPressed:
() async {
selectionHaptic();
const SizedBox(height: 8),
SizedBox(
width:
double.infinity,
child: OutlinedButton
.icon(
onPressed:
() async {
selectionHaptic();
Navigator.of(
context)
.pop();
final result =
await ImagePicker()
.pickImage(
source:
ImageSource
Navigator.of(
context)
.pop();
final result =
await ImagePicker()
.pickImage(
source: ImageSource
.gallery,
);
if (result ==
null) {
return;
}
);
if (result ==
null) {
return;
}
final bytes =
await result
.readAsBytes();
final image =
await decodeImageFromList(
bytes);
final bytes =
await result
.readAsBytes();
final image =
await decodeImageFromList(
bytes);
final message =
types
.ImageMessage(
author: user,
createdAt: DateTime
.now()
.millisecondsSinceEpoch,
height: image
.height
.toDouble(),
id: const Uuid()
.v4(),
name: result
.name,
size: bytes
.length,
uri: result
.path,
width: image
.width
.toDouble(),
);
final message =
types
.ImageMessage(
author:
user,
createdAt:
DateTime.now()
.millisecondsSinceEpoch,
height: image
.height
.toDouble(),
id: const Uuid()
.v4(),
name: result
.name,
size: bytes
.length,
uri: result
.path,
width: image
.width
.toDouble(),
);
messages.insert(
0, message);
setState(() {});
selectionHaptic();
},
icon: const Icon(Icons
.image_rounded),
label: Text(
AppLocalizations.of(
messages.insert(
0,
message);
setState(
() {});
selectionHaptic();
},
icon: const Icon(
Icons
.image_rounded),
label: Text(AppLocalizations.of(
context)!
.uploadImage)))
]));
]));
});
},
l10n: ChatL10nEn(

View File

@ -107,11 +107,6 @@ class _ScreenSettingsExportState extends State<ScreenSettingsExport> {
context: context,
builder: (context) {
return AlertDialog(
surfaceTintColor:
(Theme.of(context).brightness ==
Brightness.dark)
? Colors.grey[800]
: null,
title: Text(
AppLocalizations.of(context)!
.settingsImportChatsTitle),

View File

@ -175,11 +175,6 @@ class _ScreenSettingsInterfaceState extends State<ScreenSettingsInterface> {
context: context,
builder: (context) {
return Dialog(
surfaceTintColor:
(Theme.of(context).brightness ==
Brightness.dark)
? Colors.grey[800]
: null,
alignment: desktopLayout(context)
? null
: Alignment.bottomRight,
@ -350,20 +345,15 @@ class _ScreenSettingsInterfaceState extends State<ScreenSettingsInterface> {
selectionHaptic();
showModalBottomSheet(
context: context,
barrierColor: (Theme.of(context).brightness ==
Brightness.dark)
? Colors.grey.withOpacity(0.2)
: null,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return Container(
width: double.infinity,
decoration: (Theme.of(context).brightness ==
Brightness.dark)
? BoxDecoration(
border:
Border.all(color: Colors.white),
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(26),
topRight: Radius.circular(26)))
: null,
padding: EdgeInsets.only(
left: 16,
right: 16,

View File

@ -180,6 +180,10 @@ class _ScreenSettingsVoiceState extends State<ScreenSettingsVoice> {
showModalBottomSheet(
context: context,
barrierColor:
(Theme.of(context).brightness == Brightness.dark)
? Colors.grey.withOpacity(0.2)
: null,
builder:
(context) => StatefulBuilder(
builder: (context, setLocalState) {
@ -223,21 +227,6 @@ class _ScreenSettingsVoiceState extends State<ScreenSettingsVoice> {
});
},
child: Container(
decoration: (Theme.of(context)
.brightness ==
Brightness.dark)
? BoxDecoration(
border: Border.all(
color: Colors.white),
borderRadius:
const BorderRadius.only(
topLeft:
Radius.circular(
26),
topRight:
Radius.circular(
26)))
: null,
width: double.infinity,
padding: const EdgeInsets.only(
left: 16,

View File

@ -13,6 +13,7 @@ import 'package:dartx/dartx.dart';
import 'package:uuid/uuid.dart';
// ignore: depend_on_referenced_packages
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
// import 'package:scroll_to_index/scroll_to_index.dart';
List<String> images = [];
Future<List<llama.Message>> getHistory([String? addToSystem]) async {
@ -99,7 +100,7 @@ Future<String> getTitleAi(List history) async {
keepAlive: int.parse(prefs!.getString("keepAlive") ?? "300")),
)
.timeout(const Duration(seconds: 10));
var title = generated.message!.content;
var title = generated.message.content;
title = title.replaceAll("\n", " ").trim();
var terms = [
@ -233,7 +234,7 @@ Future<String> send(String value, BuildContext context, Function setState,
.timeout(const Duration(seconds: 30));
await for (final res in stream) {
text += (res.message?.content ?? "");
text += (res.message.content);
for (var i = 0; i < messages.length; i++) {
if (messages[i].id == newId) {
messages.removeAt(i);
@ -241,11 +242,12 @@ Future<String> send(String value, BuildContext context, Function setState,
}
}
if (chatAllowed) return "";
// if (text.trim() == "") {
// throw Exception();
// }
messages.insert(
0, types.TextMessage(author: assistant, id: newId, text: text));
//TODO: add functionality
//
// chatKey!.currentState!.scrollToMessage(messages[1].id,
// preferPosition: AutoScrollPosition.end);
if (onStream != null) {
onStream(text, false);
}
@ -266,8 +268,8 @@ Future<String> send(String value, BuildContext context, Function setState,
messages.insert(
0,
types.TextMessage(
author: assistant, id: newId, text: request.message!.content));
text = request.message!.content;
author: assistant, id: newId, text: request.message.content));
text = request.message.content;
setState(() {});
heavyHaptic();
}
@ -302,7 +304,10 @@ Future<String> send(String value, BuildContext context, Function setState,
showCloseIcon: true));
return "";
}
//TODO: add functionality
//
// chatKey!.currentState!
// .scrollToMessage(messages[1].id, preferPosition: AutoScrollPosition.end);
if ((prefs!.getString("requestType") ?? "stream") == "stream") {
if (onStream != null) {
onStream(text, true);

View File

@ -291,15 +291,10 @@ void setModel(BuildContext context, Function setState) {
} else {
showModalBottomSheet(
context: context,
builder: (context) => Container(
decoration: (Theme.of(context).brightness == Brightness.dark)
? BoxDecoration(
border: Border.all(color: Colors.white),
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(26),
topRight: Radius.circular(26)))
: null,
child: content));
barrierColor: (Theme.of(context).brightness == Brightness.dark)
? Colors.grey.withOpacity(0.2)
: null,
builder: (context) => Container(child: content));
}
}
@ -454,15 +449,13 @@ Future<bool> deleteChatDialog(BuildContext context, Function setState,
}
if ((prefs!.getBool("askBeforeDeletion") ?? false) && additionalCondition) {
resetSystemNavigation(context,
systemNavigationBarColor: Colors.grey.withOpacity(0.2));
await showDialog(
context: context,
builder: (context) {
return StatefulBuilder(builder: (context, setLocalState) {
return AlertDialog(
surfaceTintColor:
(Theme.of(context).brightness == Brightness.dark)
? Colors.grey[800]
: null,
title: Text(AppLocalizations.of(context)!.deleteDialogTitle),
content: Column(mainAxisSize: MainAxisSize.min, children: [
Text(AppLocalizations.of(context)!.deleteDialogDescription),
@ -513,18 +506,14 @@ Future<String> prompt(BuildContext context,
String? error;
await showModalBottomSheet(
context: context,
barrierColor: (Theme.of(context).brightness == Brightness.dark)
? Colors.grey.withOpacity(0.2)
: null,
isScrollControlled: true,
builder: (context) {
return StatefulBuilder(builder: (context, setLocalState) {
return PopScope(
child: Container(
decoration: (Theme.of(context).brightness == Brightness.dark)
? BoxDecoration(
border: Border.all(color: Colors.white),
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(26),
topRight: Radius.circular(26)))
: null,
padding: EdgeInsets.only(
left: 16,
right: 16,

View File

@ -125,7 +125,6 @@ void updateDialog(BuildContext context, Function title) {
context: context,
builder: (context) {
return AlertDialog(
surfaceTintColor: (Theme.of(context).brightness == Brightness.dark) ? Colors.grey[800] : null,
title:
Text(AppLocalizations.of(context)!.settingsUpdateDialogTitle),
content: Column(mainAxisSize: MainAxisSize.min, children: [

View File

@ -117,10 +117,10 @@ packages:
dependency: transitive
description:
name: crypto
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27
url: "https://pub.dev"
source: hosted
version: "3.0.3"
version: "3.0.5"
csslib:
dependency: transitive
description:
@ -205,10 +205,10 @@ packages:
dependency: transitive
description:
name: ffi
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.3"
file:
dependency: transitive
description:
@ -285,10 +285,10 @@ packages:
dependency: transitive
description:
name: file_selector_windows
sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0
sha256: "2ad726953f6e8affbc4df8dc78b77c3b4a060967a291e528ef72ae846c60fb69"
url: "https://pub.dev"
source: hosted
version: "0.9.3+1"
version: "0.9.3+2"
fixnum:
dependency: transitive
description:
@ -314,10 +314,10 @@ packages:
dependency: "direct main"
description:
name: flutter_chat_ui
sha256: "40fb37acc328dd179eadc3d67bf8bd2d950dc0da34464aa8d48e8707e0234c09"
sha256: "168a4231464ad00a17ea5f0813f1b58393bdd4035683ea4dc37bbe26be62891e"
url: "https://pub.dev"
source: hosted
version: "1.6.13"
version: "1.6.15"
flutter_displaymode:
dependency: "direct main"
description:
@ -359,10 +359,10 @@ packages:
dependency: "direct main"
description:
name: flutter_markdown
sha256: "9921f9deda326f8a885e202b1e35237eadfc1345239a0f6f0f1ff287e047547f"
sha256: a23c41ee57573e62fc2190a1f36a0480c4d90bde3a8a8d7126e5d5992fb53fb7
url: "https://pub.dev"
source: hosted
version: "0.7.1"
version: "0.7.3+1"
flutter_parsed_text:
dependency: transitive
description:
@ -375,10 +375,10 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f"
sha256: "9d98bd47ef9d34e803d438f17fd32b116d31009f534a6fa5ce3a1167f189a6de"
url: "https://pub.dev"
source: hosted
version: "2.0.19"
version: "2.0.21"
flutter_test:
dependency: "direct dev"
description: flutter
@ -401,10 +401,10 @@ packages:
dependency: transitive
description:
name: freezed_annotation
sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d
sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2
url: "https://pub.dev"
source: hosted
version: "2.4.1"
version: "2.4.4"
html:
dependency: transitive
description:
@ -433,18 +433,18 @@ packages:
dependency: "direct main"
description:
name: image_picker
sha256: "33974eca2e87e8b4e3727f1b94fa3abcb25afe80b6bc2c4d449a0e150aedf720"
sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.1.2"
image_picker_android:
dependency: transitive
description:
name: image_picker_android
sha256: "0f57fee1e8bfadf8cc41818bbcd7f72e53bb768a54d9496355d5e8a5681a19f1"
sha256: "8c5abf0dcc24fe6e8e0b4a5c0b51a5cf30cefdf6407a3213dae61edc75a70f56"
url: "https://pub.dev"
source: hosted
version: "0.8.12+1"
version: "0.8.12+12"
image_picker_for_web:
dependency: transitive
description:
@ -457,10 +457,10 @@ packages:
dependency: transitive
description:
name: image_picker_ios
sha256: "4824d8c7f6f89121ef0122ff79bb00b009607faecc8545b86bca9ab5ce1e95bf"
sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447"
url: "https://pub.dev"
source: hosted
version: "0.8.11+2"
version: "0.8.12"
image_picker_linux:
dependency: transitive
description:
@ -509,14 +509,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.19.0"
js:
dependency: transitive
description:
name: js
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.7.1"
json_annotation:
dependency: transitive
description:
@ -609,10 +601,10 @@ packages:
dependency: "direct main"
description:
name: ollama_dart
sha256: f951f01d299376706bc245c03710205a530c76a64a8458a282a6bbb2e30e2c63
sha256: f65e60c61c91f625df76b4435474bfacc315b4b4eaa8b53e2385679da121dee4
url: "https://pub.dev"
source: hosted
version: "0.1.1"
version: "0.2.1"
package_info_plus:
dependency: "direct main"
description:
@ -657,10 +649,10 @@ packages:
dependency: transitive
description:
name: path_provider_windows
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
url: "https://pub.dev"
source: hosted
version: "2.2.1"
version: "2.3.0"
pedantic:
dependency: transitive
description:
@ -681,10 +673,10 @@ packages:
dependency: transitive
description:
name: permission_handler_android
sha256: "8bb852cd759488893805c3161d0b2b5db55db52f773dbb014420b304055ba2c5"
sha256: "76e4ab092c1b240d31177bb64d2b0bea43f43d0e23541ec866151b9f7b2490fa"
url: "https://pub.dev"
source: hosted
version: "12.0.6"
version: "12.0.12"
permission_handler_apple:
dependency: transitive
description:
@ -697,18 +689,18 @@ packages:
dependency: transitive
description:
name: permission_handler_html
sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d"
sha256: af26edbbb1f2674af65a8f4b56e1a6f526156bc273d0e65dd8075fab51c78851
url: "https://pub.dev"
source: hosted
version: "0.1.1"
version: "0.1.3+2"
permission_handler_platform_interface:
dependency: transitive
description:
name: permission_handler_platform_interface
sha256: "48d4fcf201a1dad93ee869ab0d4101d084f49136ec82a8a06ed9cfeacab9fd20"
sha256: fe0ffe274d665be8e34f9c59705441a7d248edebbe5d9e3ec2665f88b79358ea
url: "https://pub.dev"
source: hosted
version: "4.2.1"
version: "4.2.2"
permission_handler_windows:
dependency: transitive
description:
@ -729,10 +721,10 @@ packages:
dependency: transitive
description:
name: platform
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
url: "https://pub.dev"
source: hosted
version: "3.1.4"
version: "3.1.5"
plugin_platform_interface:
dependency: transitive
description:
@ -742,7 +734,7 @@ packages:
source: hosted
version: "2.1.8"
scroll_to_index:
dependency: transitive
dependency: "direct main"
description:
name: scroll_to_index
sha256: b707546e7500d9f070d63e5acf74fd437ec7eeeb68d3412ef7b0afada0b4f176
@ -753,58 +745,58 @@ packages:
dependency: "direct main"
description:
name: shared_preferences
sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180
sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051"
url: "https://pub.dev"
source: hosted
version: "2.2.3"
version: "2.3.2"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2"
sha256: a7e8467e9181cef109f601e3f65765685786c1a738a83d7fbbde377589c0d974
url: "https://pub.dev"
source: hosted
version: "2.2.2"
version: "2.3.1"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7"
sha256: c4b35f6cb8f63c147312c054ce7c2254c8066745125264f0c88739c417fc9d9f
url: "https://pub.dev"
source: hosted
version: "2.4.0"
version: "2.5.2"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
version: "2.4.1"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
version: "2.4.1"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf
sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e
url: "https://pub.dev"
source: hosted
version: "2.2.1"
version: "2.4.2"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
version: "2.4.1"
simple_icons:
dependency: "direct main"
description:
@ -822,10 +814,10 @@ packages:
dependency: "direct main"
description:
name: smooth_page_indicator
sha256: "725bc638d5e79df0c84658e1291449996943f93bacbc2cec49963dbbab48d8ae"
sha256: "3b28b0c545fa67ed9e5997d9f9720d486f54c0c607e056a1094544e36934dff3"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
version: "1.2.0+3"
source_span:
dependency: transitive
description:
@ -838,18 +830,10 @@ packages:
dependency: "direct main"
description:
name: speech_to_text
sha256: "97425fd8cc60424061a0584b6c418c0eedab5201cc5e96ef15a946d7fab7b9b7"
sha256: "6cf8f284997490ebef1d68f8707bef57dcf083f43c0f915cc285428520bfe6be"
url: "https://pub.dev"
source: hosted
version: "6.6.2"
speech_to_text_macos:
dependency: transitive
description:
name: speech_to_text_macos
sha256: e685750f7542fcaa087a5396ee471e727ec648bf681f4da83c84d086322173f6
url: "https://pub.dev"
source: hosted
version: "1.1.0"
version: "7.0.0"
speech_to_text_platform_interface:
dependency: transitive
description:
@ -950,34 +934,34 @@ packages:
dependency: "direct main"
description:
name: url_launcher
sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e"
sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3"
url: "https://pub.dev"
source: hosted
version: "6.2.6"
version: "6.3.0"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
sha256: "17cd5e205ea615e2c6ea7a77323a11712dffa0720a8a90540db57a01347f9ad9"
sha256: f0c73347dfcfa5b3db8bc06e1502668265d39c08f310c29bff4e28eea9699f79
url: "https://pub.dev"
source: hosted
version: "6.3.2"
version: "6.3.9"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89"
sha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063e
url: "https://pub.dev"
source: hosted
version: "6.3.0"
version: "6.3.1"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811
sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af
url: "https://pub.dev"
source: hosted
version: "3.1.1"
version: "3.2.0"
url_launcher_macos:
dependency: transitive
description:
@ -1006,18 +990,18 @@ packages:
dependency: transitive
description:
name: url_launcher_windows
sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7
sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
version: "3.1.2"
uuid:
dependency: "direct main"
description:
name: uuid
sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8"
sha256: "83d37c7ad7aaf9aa8e275490669535c8080377cfa7a7004c24dfac53afffaa90"
url: "https://pub.dev"
source: hosted
version: "4.4.0"
version: "4.4.2"
vector_math:
dependency: transitive
description:
@ -1054,10 +1038,10 @@ packages:
dependency: "direct main"
description:
name: volume_controller
sha256: "189bdc7a554f476b412e4c8b2f474562b09d74bc458c23667356bce3ca1d48c9"
sha256: c71d4c62631305df63b72da79089e078af2659649301807fa746088f365cb48e
url: "https://pub.dev"
source: hosted
version: "2.0.7"
version: "2.0.8"
web:
dependency: transitive
description:
@ -1070,10 +1054,10 @@ packages:
dependency: transitive
description:
name: win32
sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a"
url: "https://pub.dev"
source: hosted
version: "5.5.1"
version: "5.5.4"
xdg_directories:
dependency: transitive
description:

View File

@ -11,10 +11,11 @@ dependencies:
sdk: flutter
flutter_localizations:
sdk: flutter
ollama_dart: ^0.1.1
ollama_dart: ^0.2.1
intl: any
shared_preferences: ^2.2.3
flutter_chat_ui: ^1.6.13
scroll_to_index: ^3.0.1
uuid: ^4.4.0
animated_text_kit: ^4.2.2
image_picker: ^1.1.1
@ -34,7 +35,7 @@ dependencies:
version: ^3.0.2
flutter_displaymode: ^0.6.0
duration_picker: ^1.2.0
speech_to_text: ^6.6.2
speech_to_text: ^7.0.0
flutter_tts: ^4.0.2
permission_handler: ^11.3.1
datetime_loop: ^1.2.0