[Flutter] Dart Extension Methods
extension
3
flutter
12
dart
10
Male avatar

Hades viết ngày 03/02/2021

Introduction

Có khá nhiều người chê Dart bởi nó thiếu các tiện ích mở rộng như Extensions - thứ mà các lập trình viên đã biết và sử dụng rất nhiều từ các ngôn ngữ như C#, Swift hay Kotlin...

Tại Google I/O 2019, đội ngũ Dart đã công cố 3 tính năng mới. Một trong số đó chính là Extension Methods.

alt text

Bắt đầu từ phiên bản Dart 2.7 tính năng này đã được release.

Trong bài viết này, mình sẽ cùng tìm hiểu xem có gì mới nhé.

Enable Dart Extension Methods

Để bật tính năng này, chỉ cần phiên bản dart từ 2.7 trở lên :

environment:
  sdk: '>=2.7.0 <3.0.0'

How to create extension methods

Extension method được xây dựng theo cú pháp

extension <'Tên Extension'> on <'Class cần extends'> {}

Note: Tên extension có thể có hoặc không đều được. Tốt nhất nên đặt để tránh conflicts khi khai báo.

Ví dụ :

// Import a library that contains an extension on String.
import 'int_x.dart';

extension on int {
  Duration seconds() => Duration(seconds: this);
}
final duration = 20.seconds();

Extension method members

Extensions không chỉ xác định các method mà còn có thể xác định getter, setter hay các operators khác.

Ví dụ

extension NumberParsing on String {
  int parseInt() {
    return int.parse(this);
  }
  // ···
}
print('42'.parseInt()); // Use an extension method.

Generic Extensions

Extension cũng có thể sử dụng generic type.

Bên dưới là 1 ví dụ sử dụng generic dựa trên List

extension MyFancyList<T> on List<T> {
  int get doubleLength => length * 2;
  List<T> operator -() => reversed.toList();
  List<List<T>> split(int at) => <List<T>>[sublist(0, at), sublist(at)];
}

Conclusion

Chúc các bạn coding vui vẻ :D

References

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

Hades

17 bài viết.
19 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
Male avatar
9 13
Dưới đây là một cách tổ chức thư mục mà mình cho là khá hợp lý. Hi vọng mọi người có thể tham khảo và góp ý :smile: Android_structure ├─ com.abc ...
Hades viết hơn 4 năm trước
9 13
Male avatar
5 2
1. Đừng dùng lại Đừng sử dụng lại strings cho nhiều màn hình khác nhau. 1. Tưởng tượng rằng bạn có một hộp thoại loading trên 2 màn hình Sign in v...
Hades viết gần 4 năm trước
5 2
Male avatar
4 0
Giới thiệu RecycleView là một viewGroup mới được giới thiệu trong Android L ( API 21 ). Đây là một viewGroup có chức năng tương tự như ListView nh...
Hades viết hơn 4 năm trước
4 0
Bài viết liên quan
White
42 11
Câu chuyện Câu chuyện là cuối tuần vừa rồi trong lúc đang rảnh rảnh ngồi suy nghĩ, mình thấy là một lập trình viên thì không nên ngừng trau dồi kiế...
Long Nguyen viết hơn 5 năm trước
42 11
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
17 bài viết.
19 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!