diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies index c2f8c6e..d1232de 100644 --- a/.flutter-plugins-dependencies +++ b/.flutter-plugins-dependencies @@ -1 +1 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"firebase_messaging","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_messaging-6.0.16/","dependencies":[]},{"name":"flutter_local_notifications","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_local_notifications-1.5.0+1/","dependencies":[]},{"name":"fluttertoast","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-7.1.1/","dependencies":[]},{"name":"image_cropper","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/image_cropper-1.3.1/","dependencies":[]},{"name":"image_picker","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.6.7+12/","dependencies":[]},{"name":"path_provider","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.22/","dependencies":[]},{"name":"shared_preferences","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.12+2/","dependencies":[]},{"name":"sqflite","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.1+2/","dependencies":[]}],"android":[{"name":"firebase_messaging","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_messaging-6.0.16/","dependencies":[]},{"name":"flutter_local_notifications","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_local_notifications-1.5.0+1/","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-1.0.11/","dependencies":[]},{"name":"fluttertoast","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-7.1.1/","dependencies":[]},{"name":"image_cropper","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/image_cropper-1.3.1/","dependencies":[]},{"name":"image_picker","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.6.7+12/","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"path_provider","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.22/","dependencies":[]},{"name":"shared_preferences","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.12+2/","dependencies":[]},{"name":"sqflite","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.1+2/","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-0.0.4+4/","dependencies":[]},{"name":"shared_preferences_macos","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-0.0.1+10/","dependencies":[]},{"name":"sqflite","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.1+2/","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-0.0.1+2/","dependencies":[]},{"name":"shared_preferences_linux","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-0.0.2+2/","dependencies":["path_provider_linux"]}],"windows":[{"name":"path_provider_windows","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-0.0.4+1/","dependencies":[]},{"name":"shared_preferences_windows","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-0.0.1+1/","dependencies":["path_provider_windows"]}],"web":[{"name":"fluttertoast","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-7.1.1/","dependencies":[]},{"name":"shared_preferences_web","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-0.1.2+7/","dependencies":[]}]},"dependencyGraph":[{"name":"firebase_messaging","dependencies":[]},{"name":"flutter_local_notifications","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"fluttertoast","dependencies":[]},{"name":"image_cropper","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_linux","shared_preferences_macos","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":[]}],"date_created":"2020-11-20 09:48:09.535924","version":"1.20.2"} \ No newline at end of file +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"firebase_messaging","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_messaging-6.0.16/","dependencies":[]},{"name":"flutter_local_notifications","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_local_notifications-1.5.0+1/","dependencies":[]},{"name":"fluttertoast","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-7.1.1/","dependencies":[]},{"name":"image_cropper","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/image_cropper-1.3.1/","dependencies":[]},{"name":"image_picker","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.6.7+12/","dependencies":[]},{"name":"path_provider","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.22/","dependencies":[]},{"name":"screen","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/screen-0.0.5/","dependencies":[]},{"name":"shared_preferences","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.12+2/","dependencies":[]},{"name":"sqflite","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.1+2/","dependencies":[]},{"name":"url_launcher","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-5.7.6/","dependencies":[]},{"name":"video_player","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/video_player-0.10.12+5/","dependencies":[]},{"name":"wakelock","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock-0.1.4+2/","dependencies":[]},{"name":"webview_flutter","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/webview_flutter-0.3.24/","dependencies":[]}],"android":[{"name":"firebase_messaging","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_messaging-6.0.16/","dependencies":[]},{"name":"flutter_local_notifications","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_local_notifications-1.5.0+1/","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-1.0.11/","dependencies":[]},{"name":"fluttertoast","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-7.1.1/","dependencies":[]},{"name":"image_cropper","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/image_cropper-1.3.1/","dependencies":[]},{"name":"image_picker","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.6.7+12/","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"path_provider","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-1.6.22/","dependencies":[]},{"name":"screen","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/screen-0.0.5/","dependencies":[]},{"name":"shared_preferences","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.12+2/","dependencies":[]},{"name":"sqflite","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.1+2/","dependencies":[]},{"name":"url_launcher","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-5.7.6/","dependencies":[]},{"name":"video_player","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/video_player-0.10.12+5/","dependencies":[]},{"name":"wakelock","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock-0.1.4+2/","dependencies":[]},{"name":"webview_flutter","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/webview_flutter-0.3.24/","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-0.0.4+4/","dependencies":[]},{"name":"shared_preferences_macos","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-0.0.1+10/","dependencies":[]},{"name":"sqflite","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/sqflite-1.3.1+2/","dependencies":[]},{"name":"url_launcher_macos","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-0.0.1+9/","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-0.0.1+2/","dependencies":[]},{"name":"shared_preferences_linux","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-0.0.2+2/","dependencies":["path_provider_linux"]},{"name":"url_launcher_linux","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-0.0.1+4/","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-0.0.4+1/","dependencies":[]},{"name":"shared_preferences_windows","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-0.0.1+1/","dependencies":["path_provider_windows"]},{"name":"url_launcher_windows","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-0.0.1+3/","dependencies":[]}],"web":[{"name":"fluttertoast","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-7.1.1/","dependencies":[]},{"name":"shared_preferences_web","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-0.1.2+7/","dependencies":[]},{"name":"url_launcher_web","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-0.1.4+1/","dependencies":[]},{"name":"video_player_web","path":"/Users/jailson/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_web-0.1.4+1/","dependencies":[]}]},"dependencyGraph":[{"name":"firebase_messaging","dependencies":[]},{"name":"flutter_local_notifications","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"fluttertoast","dependencies":[]},{"name":"image_cropper","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"screen","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_linux","shared_preferences_macos","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_web","url_launcher_linux","url_launcher_macos","url_launcher_windows"]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]},{"name":"video_player","dependencies":["video_player_web"]},{"name":"video_player_web","dependencies":[]},{"name":"wakelock","dependencies":[]},{"name":"webview_flutter","dependencies":[]}],"date_created":"2020-11-20 10:10:18.312327","version":"1.20.2"} \ No newline at end of file diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 16622e6..98d7457 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -269,8 +269,13 @@ "${BUILT_PRODUCTS_DIR}/image_picker/image_picker.framework", "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework", "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework", + "${BUILT_PRODUCTS_DIR}/screen/screen.framework", "${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework", "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", + "${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework", + "${BUILT_PRODUCTS_DIR}/video_player/video_player.framework", + "${BUILT_PRODUCTS_DIR}/wakelock/wakelock.framework", + "${BUILT_PRODUCTS_DIR}/webview_flutter/webview_flutter.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -287,8 +292,13 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/screen.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/video_player.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/wakelock.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/webview_flutter.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; diff --git a/lib/items/CommentItem.dart b/lib/items/CommentItem.dart index 7d114d7..6f80ed6 100644 --- a/lib/items/CommentItem.dart +++ b/lib/items/CommentItem.dart @@ -1,12 +1,14 @@ import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter_html/flutter_html.dart'; +import 'package:flutter_html/style.dart'; +import 'package:url_launcher/url_launcher.dart'; import 'package:amadeus/localizations.dart'; import 'package:amadeus/models/CommentModel.dart'; import 'package:amadeus/models/UserModel.dart'; import 'package:amadeus/res/colors.dart'; -import 'package:amadeus/utils/StringUtils.dart'; import 'package:amadeus/widgets/ClickableImage.dart'; abstract class CommentPageItem {} @@ -37,6 +39,14 @@ class LoadPostItem extends StatelessWidget implements CommentPageItem { } } +_launchURL(url) async { + if (await canLaunch(url)) { + await launch(url); + } else { + throw 'Could not launch $url'; + } +} + class CommentItem extends StatelessWidget implements CommentPageItem { final CommentModel comment; final String _webserver; @@ -90,9 +100,16 @@ class CommentItem extends StatelessWidget implements CommentPageItem { child: new Row( children: [ new Expanded( - child: new Text( - StringUtils.stripTags(comment.comment), - style: new TextStyle(fontSize: 14.0), + child: new Html( + data: comment.comment, + onLinkTap: (url) { + _launchURL(url); + }, + style: { + "html": Style( + fontSize: FontSize(14.0) + ) + }, ), ), ], diff --git a/pubspec.yaml b/pubspec.yaml index 6fe9041..2fda179 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,6 +36,8 @@ dependencies: shared_preferences: ^0.5.8 transparent_image: ^1.0.0 diacritic: ^0.1.1 + flutter_html: ^1.0.2 + url_launcher: ^5.4.2 dependency_overrides: image: ^2.1.14