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 URLs
- removeWww: Removes- www.from shown URLs
- looseUrl: Enables loose URL parsing (should parse most URLs such as- abc.com/xyz)- defaultToHttps: When used with- looseUrl, default to- httpsinstead of- http
 
- 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 parsein 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 linkifyfunction. By default, this is URL and email linkifiers