From 308183d6cd85140c96e1f73245c845628ff561ee Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Wed, 15 Nov 2023 09:23:43 +0100 Subject: [PATCH] Erweiterungen --- android/build.gradle | 2 +- lib/content_views/main_page.dart | 5 +- lib/content_views/messages_page.dart | 105 ++++++++++++++++++ pubspec.lock | 160 +++++++++++++++++++++++---- pubspec.yaml | 1 + 5 files changed, 245 insertions(+), 28 deletions(-) create mode 100644 lib/content_views/messages_page.dart diff --git a/android/build.gradle b/android/build.gradle index 58a8c74..713d7f6 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/lib/content_views/main_page.dart b/lib/content_views/main_page.dart index cc8cd82..1c517b9 100644 --- a/lib/content_views/main_page.dart +++ b/lib/content_views/main_page.dart @@ -6,6 +6,7 @@ import 'package:flutter_broadcast_receiver/flutter_broadcast_receiver.dart'; import 'package:stadtbote/content_views/accepted_jobs_page.dart'; import 'package:stadtbote/content_views/assigned_jobs_page.dart'; import 'package:stadtbote/content_views/finished_jobs_page.dart'; +import 'package:stadtbote/content_views/messages_page.dart'; import 'package:stadtbote/content_views/utils/content_view_widget.dart'; import 'package:stadtbote/content_views/utils/header_info.dart'; import 'package:stadtbote/popups/infos_popup.dart'; @@ -83,9 +84,7 @@ class _MainPageState extends State { getDefaultButton( 'Nachrichten', image: Image.asset('assets/nachrichten.png', width: 30, height: 30), - () => { - //BroadcastReceiver().publish(Constants.messageTopicPushContentView, arguments: const FinishedJobsPage()) - }), + () => {BroadcastReceiver().publish(Constants.messageTopicPushContentView, arguments: const MessagesPage())}), const SizedBox(height: 10), getDefaultButton( 'Anfahrtsbereich', diff --git a/lib/content_views/messages_page.dart b/lib/content_views/messages_page.dart new file mode 100644 index 0000000..f94f473 --- /dev/null +++ b/lib/content_views/messages_page.dart @@ -0,0 +1,105 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_chat_ui/flutter_chat_ui.dart'; +import 'package:flutter_chat_types/flutter_chat_types.dart' as types; +import 'package:stadtbote/content_views/utils/content_view_widget.dart'; +import 'package:stadtbote/content_views/utils/header_info.dart'; +import 'package:stadtbote/popups/infos_popup.dart'; + +import '../main.dart'; +import '../model/job.dart'; +import '../tools/util.dart'; + +class MessagesPage extends ContentViewWidget { + const MessagesPage({super.key}); + + @override + State createState() => _MessagesPageState(); + + @override + Future getHeaderInfo(BuildContext context) async { + return HeaderInfo( + titleWidget: Container( + padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 3), + child: const Column(children: [ + Text( + 'Zeile 1', + style: TextStyle( + color: Colors.white, + fontSize: 18.0, + ), + ), + SizedBox(height: 5), + Text( + 'Zeile 2', + style: TextStyle( + color: Colors.white, + fontSize: 18.0, + ), + ), + ]), + ), + rightButtonEnabled: true, + rightButtonVisible: true, + rightButtonImage: Util.fetchFutureIcon(const Icon(Icons.info_outline, size: 20.0, color: Colors.white)), + rightButtonOnPressed: () async { + showInfosPopup(context); + }); + } +} + +class _MessagesPageState extends State { + late final List _messages = []; + + final _user = const types.User( + id: '82091008-a484-4a89-ae75-a22bf8d6f3ac', + ); + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Chat( + messages: _messages, + onAttachmentPressed: _handleAttachmentPressed, + onMessageTap: _handleMessageTap, + //onPreviewDataFetched: _handlePreviewDataFetched, + onSendPressed: _handleSendPressed, + showUserAvatars: true, + showUserNames: true, + user: _user, + ), + ], + ); + } + + void _test() async { + var json = await rootBundle.loadString('assets/job.json'); + var jsonMap = jsonDecode(json); + var payload = jsonMap["payload"]; + + var jobsPayload = JobsPayload.fromJson(payload); + + if (jobsPayload.jobs != null) { + MyApp.isarInstance.writeTxnSync(() { + for (var job in jobsPayload.jobs as List) { + MyApp.isarInstance.jobs.putSync(job); + } + }); + } + } + + void _handleAttachmentPressed() { + } + + void _handleMessageTap(BuildContext context, types.Message p1) { + } + + void _handlePreviewDataFetched(TextMessage p1, types.PreviewData p2) { + } + + void _handleSendPressed(types.PartialText p1) { + } +} diff --git a/pubspec.lock b/pubspec.lock index 9d5a095..ac5f8d4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -53,10 +53,10 @@ packages: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.11.0" boolean_selector: dependency: transitive description: @@ -141,10 +141,10 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" checked_yaml: dependency: transitive description: @@ -173,10 +173,10 @@ packages: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.17.2" convert: dependency: transitive description: @@ -201,6 +201,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + csslib: + dependency: transitive + description: + name: csslib + sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" + url: "https://pub.dev" + source: hosted + version: "1.0.0" cupertino_icons: dependency: "direct main" description: @@ -225,6 +233,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + diffutil_dart: + dependency: transitive + description: + name: diffutil_dart + sha256: e0297e4600b9797edff228ed60f4169a778ea357691ec98408fa3b72994c7d06 + url: "https://pub.dev" + source: hosted + version: "3.0.0" dio: dependency: transitive description: @@ -241,6 +257,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.6.0" + equatable: + dependency: transitive + description: + name: equatable + sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 + url: "https://pub.dev" + source: hosted + version: "2.0.5" event_bus: dependency: transitive description: @@ -342,6 +366,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0+2" + flutter_chat_types: + dependency: transitive + description: + name: flutter_chat_types + sha256: e285b588f6d19d907feb1f6d912deaf22e223656769c34093b64e1c59b094fb9 + url: "https://pub.dev" + source: hosted + version: "3.6.2" + flutter_chat_ui: + dependency: "direct main" + description: + name: flutter_chat_ui + sha256: "6a4712026429d3b28547bd3d147ded44f8dd53dacc1ff14113693d7b7dd14382" + url: "https://pub.dev" + source: hosted + version: "1.6.10" + flutter_link_previewer: + dependency: transitive + description: + name: flutter_link_previewer + sha256: "007069e60f42419fb59872beb7a3cc3ea21e9f1bdff5d40239f376fa62ca9f20" + url: "https://pub.dev" + source: hosted + version: "3.2.2" + flutter_linkify: + dependency: transitive + description: + name: flutter_linkify + sha256: "74669e06a8f358fee4512b4320c0b80e51cffc496607931de68d28f099254073" + url: "https://pub.dev" + source: hosted + version: "6.0.0" flutter_lints: dependency: "direct dev" description: @@ -382,6 +438,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.7" + flutter_parsed_text: + dependency: transitive + description: + name: flutter_parsed_text + sha256: "529cf5793b7acdf16ee0f97b158d0d4ba0bf06e7121ef180abe1a5b59e32c1e2" + url: "https://pub.dev" + source: hosted + version: "2.2.1" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -440,6 +504,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.1" + html: + dependency: transitive + description: + name: html + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://pub.dev" + source: hosted + version: "0.15.4" http: dependency: "direct main" description: @@ -616,6 +688,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.8.2" + linkify: + dependency: transitive + description: + name: linkify + sha256: "4139ea77f4651ab9c315b577da2dd108d9aa0bd84b5d03d33323f1970c645832" + url: "https://pub.dev" + source: hosted + version: "5.0.0" lints: dependency: transitive description: @@ -652,26 +732,26 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" mgrs_dart: dependency: transitive description: @@ -716,10 +796,10 @@ packages: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" path_parsing: dependency: transitive description: @@ -824,6 +904,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.1.0" + photo_view: + dependency: transitive + description: + name: photo_view + sha256: "8036802a00bae2a78fc197af8a158e3e2f7b500561ed23b4c458107685e645bb" + url: "https://pub.dev" + source: hosted + version: "0.14.0" platform: dependency: transitive description: @@ -896,6 +984,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.3" + scroll_to_index: + dependency: transitive + description: + name: scroll_to_index + sha256: b707546e7500d9f070d63e5acf74fd437ec7eeeb68d3412ef7b0afada0b4f176 + url: "https://pub.dev" + source: hosted + version: "3.0.1" shared_preferences: dependency: "direct main" description: @@ -1001,10 +1097,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" split_view: dependency: "direct main" description: @@ -1057,10 +1153,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.6.0" time: dependency: transitive description: @@ -1105,10 +1201,10 @@ packages: dependency: transitive description: name: url_launcher - sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3 + sha256: b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba url: "https://pub.dev" source: hosted - version: "6.1.11" + version: "6.2.1" url_launcher_android: dependency: transitive description: @@ -1153,10 +1249,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: ba140138558fcc3eead51a1c42e92a9fb074a1b1149ed3c73e66035b2ccd94f2 + sha256: "7fd2f55fe86cea2897b963e864dc01a7eb0719ecc65fcef4c1cc3d686d718bb2" url: "https://pub.dev" source: hosted - version: "2.0.19" + version: "2.2.0" url_launcher_windows: dependency: transitive description: @@ -1205,6 +1301,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + visibility_detector: + dependency: transitive + description: + name: visibility_detector + sha256: dd5cc11e13494f432d15939c3aa8ae76844c42b723398643ce9addb88a5ed420 + url: "https://pub.dev" + source: hosted + version: "0.4.0+2" watcher: dependency: transitive description: @@ -1213,6 +1317,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.2" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" web_socket_channel: dependency: transitive description: @@ -1270,5 +1382,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=2.19.6 <3.0.0" - flutter: ">=3.7.0" + dart: ">=3.1.0 <4.0.0" + flutter: ">=3.13.0" diff --git a/pubspec.yaml b/pubspec.yaml index 0473466..7ef36a1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -63,6 +63,7 @@ dependencies: flutter_barcode_scanner: ^2.0.0 carousel_slider: ^4.2.1 signature: ^5.4.0 + flutter_chat_ui: ^1.6.10 dev_dependencies: flutter_test: