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

View File

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

View File

@ -175,11 +175,6 @@ class _ScreenSettingsInterfaceState extends State<ScreenSettingsInterface> {
context: context, context: context,
builder: (context) { builder: (context) {
return Dialog( return Dialog(
surfaceTintColor:
(Theme.of(context).brightness ==
Brightness.dark)
? Colors.grey[800]
: null,
alignment: desktopLayout(context) alignment: desktopLayout(context)
? null ? null
: Alignment.bottomRight, : Alignment.bottomRight,
@ -350,20 +345,15 @@ class _ScreenSettingsInterfaceState extends State<ScreenSettingsInterface> {
selectionHaptic(); selectionHaptic();
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
barrierColor: (Theme.of(context).brightness ==
Brightness.dark)
? Colors.grey.withOpacity(0.2)
: null,
builder: (context) { builder: (context) {
return StatefulBuilder( return StatefulBuilder(
builder: (context, setState) { builder: (context, setState) {
return Container( return Container(
width: double.infinity, 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( padding: EdgeInsets.only(
left: 16, left: 16,
right: 16, right: 16,

View File

@ -180,6 +180,10 @@ class _ScreenSettingsVoiceState extends State<ScreenSettingsVoice> {
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
barrierColor:
(Theme.of(context).brightness == Brightness.dark)
? Colors.grey.withOpacity(0.2)
: null,
builder: builder:
(context) => StatefulBuilder( (context) => StatefulBuilder(
builder: (context, setLocalState) { builder: (context, setLocalState) {
@ -223,21 +227,6 @@ class _ScreenSettingsVoiceState extends State<ScreenSettingsVoice> {
}); });
}, },
child: Container( 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, width: double.infinity,
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
left: 16, left: 16,

View File

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

View File

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

View File

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

View File

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

View File

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