Material và Cupertino từng bị “đóng băng” bên trong core SDK. Mọi cập nhật design phải đợi nhịp release quarterly của Flutter. Ở Flutter 3.47, cả hai thư viện đạt 1.0 dạng package độc lập trên pub.dev: material_ui và cupertino_ui.
Bản trong SDK vẫn còn ở release này. Package là opt-in. Đó là chủ đích — team đóng contribution từ tháng 4 để đường migrate nhàm chán nhất có thể.
Vì sao cần tách trong năm 2026
- Release design hàng tuần. Bugfix và component mới không còn chờ
flutter upgrade. - Upgrade độc lập. App ghim SDK cũ vẫn update được look-and-feel mới.
- Core trung lập style. Nền tảng gọn hơn cho design system riêng (và cú sốc Liquid Glass / M3 Expressive từ vendor).
Migrate bằng dart fix
flutter pub add material_ui
# nếu dùng Cupertino:
flutter pub add cupertino_ui
dart fix --apply --code=migrate_design_widgets
Lệnh này rewrite import từ package:flutter/material.dart / cupertino.dart sang package mới. Nếu pubspec.yaml không tự đổi (bug sớm đã biết), thêm dependency thủ công rồi chạy lại dart fix --apply.
Bridge khi dependency chưa kịp migrate
import 'package:material_ui/material_ui.dart';
MaterialApp(
builder: (context, child) => MaterialUiCompatibilityBridge(child: child!),
home: const HomeScreen(),
);
Localization cũng được tách — delegate Material/Cupertino giờ nằm trong package, và GlobalMaterialLocalizations.delegates đã gồm cả Cupertino lẫn Widgets.
Cạm bẫy
- Coi đây là major release nếu bạn publish package.
- Bản trong SDK sẽ bị formal deprecation ở stable tháng 11.
- Chạy lại widget test sau khi rewrite import; API theme giống nhau nhưng URI thư viện thì không.
Bài viết gốc đăng tại FlutterCook. Bản trên đó là bản được cập nhật mới nhất.
Nhận xét
Đăng nhận xét