material_ui và cupertino_ui độc lập: thay đổi gì ở bản 1.0
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.