diff --git a/CHANGELOG.md b/CHANGELOG.md
index b0b7948..d4e35da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 3.1.0
+
+- Update to Flutter 3.3.3
+- Set `WhatsApp/2` as a default user agent to parse more links
+- Added `requestTimeout` parameter, that will cancel the request if timeout is reached. Defaults to 5 seconds.
+
## 3.0.1
- Code refactor
diff --git a/README.md b/README.md
index 8eb50f3..845e732 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
[![build](https://github.com/flyerhq/flutter_link_previewer/workflows/build/badge.svg)](https://github.com/flyerhq/flutter_link_previewer/actions?query=workflow%3Abuild)
[![CodeFactor](https://www.codefactor.io/repository/github/flyerhq/flutter_link_previewer/badge)](https://www.codefactor.io/repository/github/flyerhq/flutter_link_previewer)
-URL preview extracted from the provided text with basic customization and ability to render from cached data.
+Customizable link and URL preview extracted from the provided text with the ability to render from the cache.
@@ -14,7 +14,7 @@ URL preview extracted from the provided text with basic customization and abilit
-
+
## Getting Started
diff --git a/example/.gitignore b/example/.gitignore
index a8e938c..24476c5 100644
--- a/example/.gitignore
+++ b/example/.gitignore
@@ -32,9 +32,6 @@ migrate_working_dir/
.pub/
/build/
-# Web related
-lib/generated_plugin_registrant.dart
-
# Symbolication related
app.*.symbols
diff --git a/example/.metadata b/example/.metadata
index ed0b518..e1179a6 100644
--- a/example/.metadata
+++ b/example/.metadata
@@ -4,7 +4,7 @@
# This file should be version controlled.
version:
- revision: cd41fdd495f6944ecd3506c21e94c6567b073278
+ revision: 18a827f3933c19f51862dde3fa472197683249d6
channel: stable
project_type: app
@@ -13,26 +13,26 @@ project_type: app
migration:
platforms:
- platform: root
- create_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
- base_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
+ create_revision: 18a827f3933c19f51862dde3fa472197683249d6
+ base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: android
- create_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
- base_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
+ create_revision: 18a827f3933c19f51862dde3fa472197683249d6
+ base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: ios
- create_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
- base_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
+ create_revision: 18a827f3933c19f51862dde3fa472197683249d6
+ base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: linux
- create_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
- base_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
+ create_revision: 18a827f3933c19f51862dde3fa472197683249d6
+ base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: macos
- create_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
- base_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
+ create_revision: 18a827f3933c19f51862dde3fa472197683249d6
+ base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: web
- create_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
- base_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
+ create_revision: 18a827f3933c19f51862dde3fa472197683249d6
+ base_revision: 18a827f3933c19f51862dde3fa472197683249d6
- platform: windows
- create_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
- base_revision: cd41fdd495f6944ecd3506c21e94c6567b073278
+ create_revision: 18a827f3933c19f51862dde3fa472197683249d6
+ base_revision: 18a827f3933c19f51862dde3fa472197683249d6
# User provided section
diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties
index cc5527d..cb24abd 100644
--- a/example/android/gradle/wrapper/gradle-wrapper.properties
+++ b/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,3 @@
-#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist
index 8d4492f..9625e10 100644
--- a/example/ios/Flutter/AppFrameworkInfo.plist
+++ b/example/ios/Flutter/AppFrameworkInfo.plist
@@ -21,6 +21,6 @@
CFBundleVersion
1.0
MinimumOSVersion
- 9.0
+ 11.0
diff --git a/example/ios/Podfile b/example/ios/Podfile
index 1e8c3c9..88359b2 100644
--- a/example/ios/Podfile
+++ b/example/ios/Podfile
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '9.0'
+# platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
index 6bb8168..8c0a965 100644
--- a/example/ios/Podfile.lock
+++ b/example/ios/Podfile.lock
@@ -14,9 +14,9 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
- Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
+ Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
-PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
+PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3
COCOAPODS: 1.11.3
diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj
index 316dec3..bc61a45 100644
--- a/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/example/ios/Runner.xcodeproj/project.pbxproj
@@ -9,11 +9,11 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
- 68810502A1DA9C33C36586BA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E49E0FFB2A9E64546C836DE8 /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ C0767E0EE85E5D6CA5706893 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C9A0AE070A0E4E5B13ED342 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -33,11 +33,12 @@
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 415E6C033F58671323055BBF /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 81CCB0EF21BFA59D8C0663A3 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
- 88AF73C7C7A24ADD67F9C165 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ 7C9A0AE070A0E4E5B13ED342 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7D9A4AED6FAE428DCEE0C694 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -45,8 +46,7 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- D4D600F6AA7FB11EC3398507 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
- E49E0FFB2A9E64546C836DE8 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0D958E8FA4CCA05FF747F3A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -54,24 +54,13 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 68810502A1DA9C33C36586BA /* Pods_Runner.framework in Frameworks */,
+ C0767E0EE85E5D6CA5706893 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 4FDEAB5DB7DB774D482E4E82 /* Pods */ = {
- isa = PBXGroup;
- children = (
- D4D600F6AA7FB11EC3398507 /* Pods-Runner.debug.xcconfig */,
- 81CCB0EF21BFA59D8C0663A3 /* Pods-Runner.release.xcconfig */,
- 88AF73C7C7A24ADD67F9C165 /* Pods-Runner.profile.xcconfig */,
- );
- name = Pods;
- path = Pods;
- sourceTree = "";
- };
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@@ -89,8 +78,8 @@
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
- 4FDEAB5DB7DB774D482E4E82 /* Pods */,
- E6A9522D76ED550DB9E01B21 /* Frameworks */,
+ F74C0DF74CDBC3C27154EE90 /* Pods */,
+ F72DDF77D950608FA9A1110A /* Frameworks */,
);
sourceTree = "";
};
@@ -117,14 +106,25 @@
path = Runner;
sourceTree = "";
};
- E6A9522D76ED550DB9E01B21 /* Frameworks */ = {
+ F72DDF77D950608FA9A1110A /* Frameworks */ = {
isa = PBXGroup;
children = (
- E49E0FFB2A9E64546C836DE8 /* Pods_Runner.framework */,
+ 7C9A0AE070A0E4E5B13ED342 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "";
};
+ F74C0DF74CDBC3C27154EE90 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 415E6C033F58671323055BBF /* Pods-Runner.debug.xcconfig */,
+ D0D958E8FA4CCA05FF747F3A /* Pods-Runner.release.xcconfig */,
+ 7D9A4AED6FAE428DCEE0C694 /* Pods-Runner.profile.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -132,14 +132,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- A7DBFB515018EAB84077E10D /* [CP] Check Pods Manifest.lock */,
+ 9B6FC64253C48A8052294AA4 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- B3849A7CEB79C73DE3476721 /* [CP] Embed Pods Frameworks */,
+ DBEEAF9492C043978ABF7CE0 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -226,7 +226,7 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
- A7DBFB515018EAB84077E10D /* [CP] Check Pods Manifest.lock */ = {
+ 9B6FC64253C48A8052294AA4 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -248,7 +248,7 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- B3849A7CEB79C73DE3476721 /* [CP] Embed Pods Frameworks */ = {
+ DBEEAF9492C043978ABF7CE0 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -340,7 +340,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -356,6 +356,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 3D97R82EMJ;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -417,7 +418,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -466,7 +467,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -484,6 +485,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 3D97R82EMJ;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -506,6 +508,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 3D97R82EMJ;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist
index 907f329..7f55346 100644
--- a/example/ios/Runner/Info.plist
+++ b/example/ios/Runner/Info.plist
@@ -45,5 +45,7 @@
CADisableMinimumFrameDurationOnPhone
+ UIApplicationSupportsIndirectInputEvents
+
diff --git a/example/lib/main.dart b/example/lib/main.dart
index 699fc55..92e4e21 100644
--- a/example/lib/main.dart
+++ b/example/lib/main.dart
@@ -29,7 +29,8 @@ class _MyHomePageState extends State {
List get urls => const [
'github.com/flyerhq',
- 'https://thereverseland.com',
+ 'https://u24.gov.ua',
+ 'https://twitter.com/SpaceX/status/1564975288655630338',
];
@override
diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
index 3c4935a..82b6f9d 100644
Binary files a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ
diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
index ed4cc16..13b35eb 100644
Binary files a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ
diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
index 483be61..0a3f5fa 100644
Binary files a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ
diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
index bcbf36d..bdb5722 100644
Binary files a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ
diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
index 9c0a652..f083318 100644
Binary files a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ
diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
index e71a726..326c0e7 100644
Binary files a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ
diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
index 8a31fe2..2f1632c 100644
Binary files a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and b/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ
diff --git a/example/pubspec.yaml b/example/pubspec.yaml
index a8e15df..ce4ee85 100644
--- a/example/pubspec.yaml
+++ b/example/pubspec.yaml
@@ -12,13 +12,15 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
-# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
+# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
+# In Windows, build-name is used as the major, minor, and patch parts
+# of the product and file versions while build-number is used as the build suffix.
version: 1.0.0+1
environment:
- sdk: ">=2.17.0 <3.0.0"
+ sdk: '>=2.17.0 <3.0.0'
# Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions
@@ -32,12 +34,12 @@ dependencies:
cupertino_icons: ^1.0.5
flutter:
sdk: flutter
- flutter_chat_types: ^3.4.3
+ flutter_chat_types: ^3.5.0
flutter_link_previewer:
path: ../
dev_dependencies:
- dart_code_metrics: ^4.15.2
+ dart_code_metrics: ^4.19.1
# The "flutter_lints" package below contains a set of recommended lints to
# encourage good coding practices. The lint set provided by the package is
# activated in the `analysis_options.yaml` file located at the root of your
diff --git a/example/windows/runner/CMakeLists.txt b/example/windows/runner/CMakeLists.txt
index b9e550f..17411a8 100644
--- a/example/windows/runner/CMakeLists.txt
+++ b/example/windows/runner/CMakeLists.txt
@@ -20,6 +20,13 @@ add_executable(${BINARY_NAME} WIN32
# that need different build settings.
apply_standard_settings(${BINARY_NAME})
+# Add preprocessor definitions for the build version.
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"")
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}")
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}")
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}")
+target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}")
+
# Disable Windows macros that collide with C++ standard library functions.
target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX")
diff --git a/example/windows/runner/Runner.rc b/example/windows/runner/Runner.rc
index 0ee3ec2..e130a8b 100644
--- a/example/windows/runner/Runner.rc
+++ b/example/windows/runner/Runner.rc
@@ -60,14 +60,14 @@ IDI_APP_ICON ICON "resources\\app_icon.ico"
// Version
//
-#ifdef FLUTTER_BUILD_NUMBER
-#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER
+#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD)
+#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD
#else
-#define VERSION_AS_NUMBER 1,0,0
+#define VERSION_AS_NUMBER 1,0,0,0
#endif
-#ifdef FLUTTER_BUILD_NAME
-#define VERSION_AS_STRING #FLUTTER_BUILD_NAME
+#if defined(FLUTTER_VERSION)
+#define VERSION_AS_STRING FLUTTER_VERSION
#else
#define VERSION_AS_STRING "1.0.0"
#endif
diff --git a/example/windows/runner/runner.exe.manifest b/example/windows/runner/runner.exe.manifest
index c977c4a..a42ea76 100644
--- a/example/windows/runner/runner.exe.manifest
+++ b/example/windows/runner/runner.exe.manifest
@@ -7,7 +7,7 @@
-
+
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index bddced9..1b4ade9 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -160,6 +160,7 @@ Future _getBiggestImageUrl(
Future getPreviewData(
String text, {
String? proxy,
+ Duration? requestTimeout,
String? userAgent,
}) async {
const previewData = PreviewData();
@@ -193,8 +194,9 @@ Future getPreviewData(
}
previewDataUrl = _calculateUrl(url, proxy);
final uri = Uri.parse(previewDataUrl);
- final response = await http
- .get(uri, headers: {if (userAgent != null) 'User-Agent': userAgent});
+ final response = await http.get(uri, headers: {
+ 'User-Agent': userAgent ?? 'WhatsApp/2',
+ }).timeout(requestTimeout ?? const Duration(seconds: 5));
final document = parser.parse(utf8.decode(response.bodyBytes));
final imageRegexp = RegExp(regexImageContentType);
diff --git a/lib/src/widgets/link_preview.dart b/lib/src/widgets/link_preview.dart
index cef53c5..f4701b5 100644
--- a/lib/src/widgets/link_preview.dart
+++ b/lib/src/widgets/link_preview.dart
@@ -30,6 +30,7 @@ class LinkPreview extends StatefulWidget {
this.openOnPreviewTitleTap = false,
this.padding,
required this.previewData,
+ this.requestTimeout,
required this.text,
this.textStyle,
this.textWidget,
@@ -89,6 +90,9 @@ class LinkPreview extends StatefulWidget {
/// data again
final PreviewData? previewData;
+ /// Request timeout after which the request will be cancelled. Defaults to 5 seconds.
+ final Duration? requestTimeout;
+
/// Text used for parsing.
final String text;
@@ -299,6 +303,7 @@ class _LinkPreviewState extends State
final previewData = await getPreviewData(
text,
proxy: widget.corsProxy,
+ requestTimeout: widget.requestTimeout,
userAgent: widget.userAgent,
);
_handlePreviewDataFetched(previewData);
diff --git a/pubspec.yaml b/pubspec.yaml
index 932daed..d4e039a 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,28 +1,28 @@
name: flutter_link_previewer
description: >
- URL preview extracted from the provided text with
- basic customization and ability to render from cached data.
-version: 3.0.1
+ Customizable link and URL preview extracted from the
+ provided text with the ability to render from the cache.
+version: 3.1.0
homepage: https://flyer.chat
repository: https://github.com/flyerhq/flutter_link_previewer
environment:
- sdk: ">=2.17.0 <3.0.0"
- flutter: ">=2.0.0"
+ sdk: '>=2.17.0 <3.0.0'
+ flutter: '>=2.0.0'
dependencies:
flutter:
sdk: flutter
- flutter_chat_types: ^3.4.3
+ flutter_chat_types: ^3.5.0
flutter_linkify: ^5.0.2
html: ^0.15.0
- http: ^0.13.4
+ http: ^0.13.5
linkify: ^4.1.0
- meta: ^1.7.0
- url_launcher: ^6.1.3
+ meta: ^1.8.0
+ url_launcher: ^6.1.6
dev_dependencies:
- dart_code_metrics: ^4.15.2
+ dart_code_metrics: ^4.19.1
flutter_lints: ^2.0.1
flutter_test:
sdk: flutter