diff --git a/lib/widgets/html/html.dart b/lib/widgets/html/html.dart
index 7c99471..8eb60d8 100644
--- a/lib/widgets/html/html.dart
+++ b/lib/widgets/html/html.dart
@@ -18,147 +18,137 @@ class const Html(
super.key,
}) extends ConsumerWidget {
@override
- Widget
- build(BuildContext context, WidgetRef ref)
- // needed until https://github.com/daohoangson/flutter_widget_from_html/issues/1618 is resolved
- => MaterialUiCompatibilityBridge(
- child: HtmlWidget(
- html,
- buildAsync: false,
- textStyle: textStyle,
- customWidgetBuilder: (element) {
- if (element.attributes.keys.contains("data-mx-profile-fallback")) {
- return SizedBox.shrink();
- }
+ Widget build(BuildContext context, WidgetRef ref) => HtmlWidget(
+ html,
+ buildAsync: false,
+ textStyle: textStyle,
+ customWidgetBuilder: (element) {
+ if (element.attributes.keys.contains("data-mx-profile-fallback")) {
+ return SizedBox.shrink();
+ }
- if (element.attributes.keys.contains("data-mx-spoiler")) {
- return InlineCustomWidget(child: SpoilerText(element.text));
- }
+ if (element.attributes.keys.contains("data-mx-spoiler")) {
+ return InlineCustomWidget(child: SpoilerText(element.text));
+ }
- final height =
- int.tryParse(element.attributes["height"] ?? "") ??
- (element.attributes.keys.contains("data-mx-emoticon")
- ? 32
- : null) ??
- 300;
- final width = int.tryParse(element.attributes["width"] ?? "");
- final src = Uri.tryParse(element.attributes["src"] ?? "");
+ final height =
+ int.tryParse(element.attributes["height"] ?? "") ??
+ (element.attributes.keys.contains("data-mx-emoticon") ? 32 : null) ??
+ 300;
+ final width = int.tryParse(element.attributes["width"] ?? "");
+ final src = Uri.tryParse(element.attributes["src"] ?? "");
- return switch (element.localName) {
- "code" =>
- element.parent?.localName == "pre"
- ? CodeBlock(
- element.text,
- lang: element.className.replaceAll("language-", ""),
- )
- : InlineCustomWidget(
- child: ClipRRect(
- borderRadius: .all(.circular(4)),
- child: Container(
- padding: .all(8),
- color: Theme.of(context)
- .colorScheme
- .surfaceContainerHighest,
- child: SelectableText(
- element.text,
- style: .new(fontFamily: "bundled-mono"),
- ),
+ return switch (element.localName) {
+ "code" =>
+ element.parent?.localName == "pre"
+ ? CodeBlock(
+ element.text,
+ lang: element.className.replaceAll("language-", ""),
+ )
+ : InlineCustomWidget(
+ child: ClipRRect(
+ borderRadius: .all(.circular(4)),
+ child: Container(
+ padding: .all(8),
+ color: Theme.of(context)
+ .colorScheme
+ .surfaceContainerHighest,
+ child: SelectableText(
+ element.text,
+ style: .new(fontFamily: "bundled-mono"),
),
),
),
+ ),
- "blockquote" => Quoted(
- Html(element.innerHtml, textStyle: textStyle, roomId: roomId),
- ),
-
- "a" =>
- element.attributes["href"]?.linkInfo == null
- ? null
- : InlineCustomWidget(
- child: MentionChip(element.attributes["href"]!, roomId),
- ),
-
- "img" =>
- src == null
- ? SizedBox.shrink()
- : InlineCustomWidget(
- alignment: PlaceholderAlignment.middle,
- child: ExpandableImage(
- .new(mxc: src),
- child: Image(
- image: MxcImage(ref, .new(mxc: src)),
- errorBuilder: (_, error, _) => Text(
- "Image Failed to Load",
- style: .new(
- color: Theme.of(context).colorScheme.error,
- ),
- ),
- height: height.toDouble(),
- width: width?.toDouble(),
- loadingBuilder: (_, child, loadingProgress) =>
- loadingProgress == null
- ? child
- : CircularProgressIndicator(),
- ),
- ),
- ),
-
- // Allowed elements list
- ("del" ||
- "h1" ||
- "h2" ||
- "h3" ||
- "h4" ||
- "h5" ||
- "h6" ||
- "p" ||
- "ul" ||
- "ol" ||
- "sup" ||
- "sub" ||
- "li" ||
- "b" ||
- "i" ||
- "u" ||
- "strong" ||
- "em" ||
- "s" ||
- "code" ||
- "hr" ||
- "br" ||
- "div" ||
- "table" ||
- "thead" ||
- "tbody" ||
- "tr" ||
- "th" ||
- "td" ||
- "caption" ||
- "pre" ||
- "span" ||
- "details" ||
- "summary") =>
- null,
-
- _ => SizedBox.shrink(),
- };
- },
- customStylesBuilder: (element) => {
- "width": "auto",
- ...Map.fromEntries(
- element.attributes
- .mapTo?>(
- (key, value) => switch (key) {
- "data-mx-color" => .new("color", value),
- "data-mx-bg-color" => .new("background-color", value),
- _ => null,
- },
- )
- .nonNulls,
+ "blockquote" => Quoted(
+ Html(element.innerHtml, textStyle: textStyle, roomId: roomId),
),
- },
- onTapUrl: (url) =>
- ref.watch(LaunchHelper.provider).launchUrl(.parse(url)),
- ),
+
+ "a" =>
+ element.attributes["href"]?.linkInfo == null
+ ? null
+ : InlineCustomWidget(
+ child: MentionChip(element.attributes["href"]!, roomId),
+ ),
+
+ "img" =>
+ src == null
+ ? SizedBox.shrink()
+ : InlineCustomWidget(
+ alignment: PlaceholderAlignment.middle,
+ child: ExpandableImage(
+ .new(mxc: src),
+ child: Image(
+ image: MxcImage(ref, .new(mxc: src)),
+ errorBuilder: (_, error, _) => Text(
+ "Image Failed to Load",
+ style: .new(color: Theme.of(context).colorScheme.error),
+ ),
+ height: height.toDouble(),
+ width: width?.toDouble(),
+ loadingBuilder: (_, child, loadingProgress) =>
+ loadingProgress == null
+ ? child
+ : CircularProgressIndicator(),
+ ),
+ ),
+ ),
+
+ // Allowed elements list
+ ("del" ||
+ "h1" ||
+ "h2" ||
+ "h3" ||
+ "h4" ||
+ "h5" ||
+ "h6" ||
+ "p" ||
+ "ul" ||
+ "ol" ||
+ "sup" ||
+ "sub" ||
+ "li" ||
+ "b" ||
+ "i" ||
+ "u" ||
+ "strong" ||
+ "em" ||
+ "s" ||
+ "code" ||
+ "hr" ||
+ "br" ||
+ "div" ||
+ "table" ||
+ "thead" ||
+ "tbody" ||
+ "tr" ||
+ "th" ||
+ "td" ||
+ "caption" ||
+ "pre" ||
+ "span" ||
+ "details" ||
+ "summary") =>
+ null,
+
+ _ => SizedBox.shrink(),
+ };
+ },
+ customStylesBuilder: (element) => {
+ "width": "auto",
+ ...Map.fromEntries(
+ element.attributes
+ .mapTo?>(
+ (key, value) => switch (key) {
+ "data-mx-color" => .new("color", value),
+ "data-mx-bg-color" => .new("background-color", value),
+ _ => null,
+ },
+ )
+ .nonNulls,
+ ),
+ },
+ onTapUrl: (url) => ref.watch(LaunchHelper.provider).launchUrl(.parse(url)),
);
}
diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc
index 70d9ba2..c7d5bdb 100644
--- a/linux/flutter/generated_plugin_registrant.cc
+++ b/linux/flutter/generated_plugin_registrant.cc
@@ -6,9 +6,9 @@
#include "generated_plugin_registrant.h"
+#include
#include
#include
-#include
#include
#include
#include
@@ -17,15 +17,15 @@
#include
void fl_register_plugins(FlPluginRegistry* registry) {
+ g_autoptr(FlPluginRegistrar) app_links_linux_registrar =
+ fl_plugin_registry_get_registrar_for_plugin(registry, "AppLinksPluginLinux");
+ app_links_plugin_linux_register_with_registrar(app_links_linux_registrar);
g_autoptr(FlPluginRegistrar) dynamic_color_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin");
dynamic_color_plugin_register_with_registrar(dynamic_color_registrar);
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
- g_autoptr(FlPluginRegistrar) gtk_registrar =
- fl_plugin_registry_get_registrar_for_plugin(registry, "GtkPlugin");
- gtk_plugin_register_with_registrar(gtk_registrar);
g_autoptr(FlPluginRegistrar) media_kit_libs_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitLibsLinuxPlugin");
media_kit_libs_linux_plugin_register_with_registrar(media_kit_libs_linux_registrar);
diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake
index 1d53ad7..b8f6a3a 100644
--- a/linux/flutter/generated_plugins.cmake
+++ b/linux/flutter/generated_plugins.cmake
@@ -3,9 +3,9 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
+ app_links_linux
dynamic_color
file_selector_linux
- gtk
media_kit_libs_linux
media_kit_video
screen_retriever_linux
diff --git a/pubspec.lock b/pubspec.lock
index a0e58e4..0f4641a 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -5,26 +5,26 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
- sha256: fdcd9f70f9eb80df3bc5ed0fa67280df2595fd481948df8a9ab082e6a40ad04b
+ sha256: "48e48f73a431eb269eec66d243a63a07ed90ef9417a74047a3b98d52338626ad"
url: "https://pub.dev"
source: hosted
- version: "108.0.0"
+ version: "109.0.0"
analysis_server_plugin:
dependency: transitive
description:
name: analysis_server_plugin
- sha256: "3460f040e1f77647fcd82db9bd3bb117de04d04a3d67c39ad361794331147a4e"
+ sha256: "9f293f95cf41cb513a9a4f322354e2fa5483125e0f18bbeca254543ac9c3dda6"
url: "https://pub.dev"
source: hosted
- version: "0.3.23"
+ version: "0.3.24"
analyzer:
dependency: transitive
description:
name: analyzer
- sha256: a51c769bff3b6dfbe9d60199b8606d808290702a296bef0c26a4ca391d414e46
+ sha256: "6d377901d198536b648172974d9d4f277910502cad92193466869cac0ff34990"
url: "https://pub.dev"
source: hosted
- version: "14.4.0"
+ version: "14.5.0"
analyzer_buffer:
dependency: transitive
description:
@@ -37,26 +37,26 @@ packages:
dependency: transitive
description:
name: analyzer_plugin
- sha256: "9a3518eb84e8e26665874d9867534961d855493e9c5eb0eb55cbd46edd995529"
+ sha256: "2c59e6fba4971dc9ece97acd55b4f95b67a98e6ae0a55bff6f9dfc2bb59e8b1a"
url: "https://pub.dev"
source: hosted
- version: "0.14.17"
+ version: "0.14.18"
app_links:
dependency: "direct main"
description:
name: app_links
- sha256: f8db46d2ea9ff6f3a37191a7fd5b7813da1253ace8c32c1b9eadace41d1188ea
+ sha256: "08ba88bf19d9edea33130cb71c8ced2cb982b4e00b82efef4a434d1357bc69c3"
url: "https://pub.dev"
source: hosted
- version: "7.2.1"
+ version: "7.2.2"
app_links_linux:
dependency: transitive
description:
name: app_links_linux
- sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81
+ sha256: "9ccb5802085a1e57bb07b6256fd1d61a78c7ec104944d4965e62938b4fefd9cb"
url: "https://pub.dev"
source: hosted
- version: "1.0.3"
+ version: "1.0.4"
app_links_platform_interface:
dependency: transitive
description:
@@ -69,18 +69,18 @@ packages:
dependency: transitive
description:
name: app_links_web
- sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555
+ sha256: "382d32c6f486f15b1d7f5d6a37a70a481a4fc08382eef419d373169921a3e765"
url: "https://pub.dev"
source: hosted
- version: "1.0.4"
+ version: "1.0.5"
archive:
dependency: transitive
description:
name: archive
- sha256: "6c5bcd986e06b94e3c40244af471750840a3d2341d1f9763a1100a14add517b4"
+ sha256: f773153144ce0456ae77d96bd247f2efd58efe4f3e5ad42616d0385c031aea11
url: "https://pub.dev"
source: hosted
- version: "4.3.0"
+ version: "4.5.1"
args:
dependency: transitive
description:
@@ -141,10 +141,10 @@ packages:
dependency: "direct dev"
description:
name: build_runner
- sha256: "894c243f6bc32015fec466ce30a6925bd537a77a426ee5bf481120477eb3de67"
+ sha256: "6feadd32d90a68253c1f7b4fcff76adb4b41ad32a53f8bad835dc65f01ac9dc5"
url: "https://pub.dev"
source: hosted
- version: "2.16.1"
+ version: "2.16.2"
built_collection:
dependency: transitive
description:
@@ -261,10 +261,10 @@ packages:
dependency: transitive
description:
name: cupertino_ui
- sha256: c23816577a1280cff409e989541767887011f8f1d8c1863a794ed308af46f2a9
+ sha256: e9dfe7fac704028f8928cbe4028a0be5e8a709498e8daf8247de99e99a32aef3
url: "https://pub.dev"
source: hosted
- version: "1.1.1"
+ version: "1.0.2"
dart_style:
dependency: transitive
description:
@@ -333,10 +333,10 @@ packages:
dependency: "direct main"
description:
name: fast_immutable_collections
- sha256: "58cec99fc068427c71901e82d4b31b232240ebe6e61200993c2cb91bcada0ff6"
+ sha256: "3f791151fe63e27beffdba12835db33c60031e324351f683879ebe18d1b10588"
url: "https://pub.dev"
source: hosted
- version: "11.2.0"
+ version: "11.2.1"
ffi:
dependency: "direct main"
description:
@@ -357,10 +357,10 @@ packages:
dependency: "direct main"
description:
name: ffigen
- sha256: "31b2ca630cede89babbbf31688d20b735967c51bf60572b06ec16718e5a7f1ec"
+ sha256: "6f55d99ac1857fc063b58c3b31753df2bba417028ba98d30c6d625a385855064"
url: "https://pub.dev"
source: hosted
- version: "22.0.0"
+ version: "23.0.0"
file:
dependency: transitive
description:
@@ -569,10 +569,10 @@ packages:
dependency: "direct main"
description:
name: flutter_widget_from_html_core
- sha256: "530f2e3cc57be1a00f8bfae1b0000064e8a6df0cf1fb4d48a80f85afde9b39b7"
+ sha256: "4eb6b5ece5fa5a2c6b35f621433aa36d5f115cc45e8638c7fac0d709561ea9f6"
url: "https://pub.dev"
source: hosted
- version: "0.17.4"
+ version: "0.18.0-beta.1"
fluttertagger:
dependency: "direct main"
description:
@@ -621,14 +621,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.3.2"
- gtk:
- dependency: transitive
- description:
- name: gtk
- sha256: "4ff85b2a16724029dd9e5bbb5a94b6918f9973f74ba571c949d2002801879cf5"
- url: "https://pub.dev"
- source: hosted
- version: "2.2.0"
hooks:
dependency: "direct main"
description:
@@ -689,26 +681,26 @@ packages:
dependency: transitive
description:
name: image
- sha256: a1e7f4951e538a568e14b856702afc9ae1d2f4b202daced8d22c1b9cd211ce89
+ sha256: "89ed75b2f8231fe676808c5564f9590d728024ded7ac782a7ed8474f1c95b72a"
url: "https://pub.dev"
source: hosted
- version: "4.10.1"
+ version: "4.12.0"
image_picker:
dependency: "direct main"
description:
name: image_picker
- sha256: d8402284df184bc05f4a2210c6c23983b0720f4cd87cbd05c5390a78af602667
+ sha256: e71b1bd9e40124041128d60fc3034c7b1598e1bba4e570bba0c70301c817013a
url: "https://pub.dev"
source: hosted
- version: "1.2.3"
+ version: "1.2.4"
image_picker_android:
dependency: transitive
description:
name: image_picker_android
- sha256: "0a55d645a670d6ae11efa948f955ae904afa472f1344fc15a7ddacc20c1e7219"
+ sha256: "8a7823d5d3e884f7780829d85d92110d072bdcd9ed48e2be158d2abe91a912d4"
url: "https://pub.dev"
source: hosted
- version: "0.8.13+23"
+ version: "0.8.13+25"
image_picker_for_web:
dependency: transitive
description:
@@ -721,10 +713,10 @@ packages:
dependency: transitive
description:
name: image_picker_ios
- sha256: "852a7762962f3bb3ad54ef1d342669e41557f466033a676baa8876b367cf4050"
+ sha256: "4fb88d4350ffc208c2a09fc321db1f80282688716b8cfe10c8c80acc5ae8934a"
url: "https://pub.dev"
source: hosted
- version: "0.8.13+8"
+ version: "0.8.13+10"
image_picker_linux:
dependency: transitive
description:
@@ -745,10 +737,10 @@ packages:
dependency: transitive
description:
name: image_picker_platform_interface
- sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c"
+ sha256: "2dee4b4e3be429db71472c9c559c981498070a61af1ba82e0e4986fc5dadc042"
url: "https://pub.dev"
source: hosted
- version: "2.11.1"
+ version: "2.11.2"
image_picker_windows:
dependency: transitive
description:
@@ -906,10 +898,10 @@ packages:
dependency: "direct main"
description:
name: material_ui
- sha256: "32d98f11cf5942a095a8c3e01b03e4de3b17941437713dcf36b1088fb62e23d2"
+ sha256: "98ab9eda579ecae623e4b376c603035c5def78ce706f735f30bd632af5814695"
url: "https://pub.dev"
source: hosted
- version: "1.5.0"
+ version: "1.6.0"
measure_size:
dependency: "direct main"
description:
@@ -1027,10 +1019,10 @@ packages:
dependency: transitive
description:
name: objective_c
- sha256: ad56fd53a78ff6b1472fa59ff2a4e8b8ccabafc586fc263a1dfad0b99b5553e3
+ sha256: "5c80c2ad6e2c0397de5db38c6d653e69616a3397e13aa7633bf39eb668f2041b"
url: "https://pub.dev"
source: hosted
- version: "9.6.0"
+ version: "9.6.2"
package_config:
dependency: transitive
description:
@@ -1043,10 +1035,10 @@ packages:
dependency: "direct main"
description:
name: package_info_plus
- sha256: "127e1751e37ffb2ff4658beeaca77bad0c27bf5f932bd3a501c2296926d4b481"
+ sha256: "73ef2cd5c11a7548f9b7f6fc2a4f6113de2e64aa2a70de63feede95548822908"
url: "https://pub.dev"
source: hosted
- version: "10.2.1"
+ version: "10.2.2"
package_info_plus_platform_interface:
dependency: transitive
description:
@@ -1291,10 +1283,10 @@ packages:
dependency: "direct main"
description:
name: shared_preferences
- sha256: c3025c5534b01739267eb7d76959bbc25a6d10f6988e1c2a3036940133dd10bf
+ sha256: "1e85e0dccf5b4a016077fea7dfbb4a7cb39c759ac1596fcf60c06deadb7da91f"
url: "https://pub.dev"
source: hosted
- version: "2.5.5"
+ version: "2.5.6"
shared_preferences_android:
dependency: transitive
description:
@@ -1554,10 +1546,10 @@ packages:
dependency: "direct main"
description:
name: url_launcher
- sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8
+ sha256: e8cc955c97e06df9879140a1fe301f3d493f01b7c62dec7f46834be31d7e9fda
url: "https://pub.dev"
source: hosted
- version: "6.3.2"
+ version: "6.3.3"
url_launcher_android:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 7f99ba3..ef3d403 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -47,27 +47,27 @@ dependencies:
flutter_riverpod: 3.4.3
hooks_riverpod: 3.4.3
intl: 0.20.3
- fast_immutable_collections: 11.2.0
+ fast_immutable_collections: 11.2.1
path_provider: 2.1.6
- url_launcher: 6.3.2
+ url_launcher: 6.3.3
freezed_annotation: 3.1.0
- image_picker: 1.2.3
+ image_picker: 1.2.4
path: 1.9.1
dynamic_color: 2.1.0
collection: 1.19.1
window_manager: 0.5.2
color_hash: 1.0.1
- flutter_widget_from_html_core: 0.17.4
+ flutter_widget_from_html_core: 0.18.0-beta.1
flutter_svg: 2.3.0
json_annotation: 4.12.0
- shared_preferences: 2.5.5
+ shared_preferences: 2.5.6
fluttertagger: 2.3.2
dynamic_polls: 0.0.8
flutter_hooks: 0.21.3+1
ffi: 2.2.0
hooks: 2.2.0
code_assets: 2.1.0
- ffigen: 22.0.0
+ ffigen: 23.0.0
timeago: 3.7.1
http: 1.6.0
flutter_linkify: 6.0.0
@@ -85,10 +85,10 @@ dependencies:
path: packages/navigation_rail_m3e
m3e_card_list: 1.0.0
xdg_directories: 1.1.0
- package_info_plus: 10.2.1
- app_links: 7.2.1
+ package_info_plus: 10.2.2
+ app_links: 7.2.2
file_selector: 1.1.0
- material_ui: 1.5.0
+ material_ui: 1.6.0
unifiedpush: 6.2.0
unifiedpush_storage_shared_preferences: 1.0.0
flutter_local_notifications: 22.3.1
@@ -99,7 +99,7 @@ dependencies:
ref: quad/nexus
dev_dependencies:
- build_runner: 2.16.1
+ build_runner: 2.16.2
flutter_lints: 6.0.0
freezed: 4.0.2
riverpod_lint: 3.1.9