Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
[Flutter] Dart Extension Methods
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.
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






