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 && ==; } }

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

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 != { 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
  • 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.


Loved by over 4 million developers and more than 90,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.