linkify
Low-level link (text, URLs, emails, phone numbers, user tags) parsing library in Dart.
Required Dart >=2.12 (has null-safety support).
Install
Install by adding this package to your pubspec.yaml
:
dependencies:
linkify: ^5.0.0
Usage
import 'package:linkify/linkify.dart';
linkify("Made by https://cretezy.com person@example.com");
// Output: [TextElement: 'Made by ', UrlElement: 'https://cretezy.com' (cretezy.com), TextElement: ' ', EmailElement: 'person@example.com' (person@example.com)]
Options
You can pass LinkifyOptions
to the linkify
method to change the humanization of URLs (turning https://example.com
to example.com
):
linkify("https://cretezy.com");
// [UrlElement: 'https://cretezy.com' (cretezy.com)]
linkify("https://cretezy.com", options: LinkifyOptions(humanize: false));
// [UrlElement: 'https://cretezy.com' (https://cretezy.com)]
humanize
: Removes http/https from shown URLsremoveWww
: Removeswww.
from shown URLslooseUrl
: Enables loose URL parsing (should parse most URLs such asabc.com/xyz
)defaultToHttps
: When used withlooseUrl
, default tohttps
instead ofhttp
excludeLastPeriod
: Excludes.
at end of URLs
Linkifiers
You can pass linkifiers to linkify
as such:
linkify("@cretezy", linkifiers: [UserTagLinkifier()]);
Available linkifiers:
EmailLinkifier
UrlLinkifier
PhoneNumberLinkifier
UserTagLinkifier
Custom Linkifier
You can write custom linkifiers for phone numbers or other types of links. Look at the URL linkifier for an example.
This is the flow:
- Calls
parse
in the linkifier with a list ofLinkifyElement
. This starts as[TextElement(text)]
- Your parsers then splits each element into it's parts. For example,
[TextElement("Hello https://example.com")]
would become[TextElement("Hello "), UrlElement("https://example.com")]
- Each parsers is ran in order of how they are passed to the main
linkify
function. By default, this is URL and email linkifiers