Updated dark theme borders
This commit is contained in:
parent
8c122526ef
commit
13e266a3c9
347
lib/main.dart
347
lib/main.dart
|
@ -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(
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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: [
|
||||
|
|
150
pubspec.lock
150
pubspec.lock
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue