Sentry Answers>Flutter>

Extensions in Dart

Extensions in Dart

Lazar Nikolov

The ProblemJump To Solution

Its not much of a solution to a problem, but a nice convenience. Extensions in Dart allow you to develop custom functionalities on any library or data structure, including your own. So how do we go about them?

The Solution

There&aspo;s a specific keyword in Dart used to create extensions: extension. When creating an extension we also need to specify on which data type it should apply. Lets say we want to make a few useful DateTime extension methods. We should create a separate file and create our date extensions inside:

Click to Copy
// date_extensions.dart extension DateExtensions on DateTime { // ... }

Lets create an extension method that checks whether one date is at the same day as another:

Click to Copy
extension DateExtensions on DateTime { bool isSameDay(DateTime other) { return this.year == other.year && this.month == other.month && this.day == other.day; } }

Note: Ive put this so you can see how the comparison happens. The IDE will most likely warn you: Don't access members with this unless avoiding shadowing.

We can use our new extension method like so (dont forget to import your dart extension file):

Click to Copy
date1.isSameDate(date2)

The this in our extension method refers to the date1 variable.

Aside from methods, we can also create getters, setters and operators as well. Heres a getter method that returns a date in a specific format:

Click to Copy
extension DateExtensions on DateTime { // ... get formattedDate { DateFormat format; if (year != DateTime.now().year) { format = DateFormat("E, d MMM yyyy"); // we can also use other extension methods inside } else if (isToday()) { return "Today"; // we can also use other extension methods inside } else if (isYesterday()) { return "Yesterday"; } else { format = DateFormat("E, d MMM"); } return format.format(this); } }
  • ResourcesSentry vs. Crashlytics: The Mobile Developer's Decision-Making Guide
  • Syntax.fm logo
    Listen to the Syntax Podcast

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 100,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

© 2024 • Sentry is a registered Trademark
of Functional Software, Inc.