跪拜 Guibai
← Back to the summary

Flutter's Material/Cupertino Decoupling Hits 100% Code Migration, M3 Expressive Begins

A new Flutter version will be released next month. I checked the progress of Flutter's style decoupling today, and it looks quite promising. The massive 600,000+ line change PR #11888 Decoupling recopy from last month has been merged, meaning all Material/Cupertino source code, tests, examples, and dart fixes have been moved entirely to flutter/packages.

Previous attempts like #11669 and #11887 failed several times, but this "recopy" finally moved everything cleanly in one go.

Currently, material_ui and cupertino_ui are independent style packages with complete source code. The project has started running various tests, and the version dependency is:

version: 0.0.2      # Not published to pub.dev (publish_to: none)
flutter: ">=3.44.0" # Minimum Flutter dependency 3.44

However, the original code in flutter/flutter still exists but is temporarily frozen. This part of the code will likely be deleted and switched over only after the packages are fully stable.

The newly added [#12119] [material_ui, cupertino_ui] Localizations, the migration of multi-language localization, is considered the final module of the decoupling. Once this part is handled, it can basically enter the final testing phase.

Additionally, support for Material 3 Expressive has also started. Several current PRs mark the beginning of the first batch of M3 Expressive widgets, progressing much faster than Liquid Glass at least:

PR Content Status
#12093 Add M3 Expressive IconButton open, 5 days ago
#11931 Add global Material style variant (Expressive style switching mechanism) open, 19 days ago
#12121 Add helper methods in gen_defaults template (preparing tools for batch generation of Expressive tokens) open, today
#12122 Migrate AppBar M3 template open, today

But there is no new progress on the iOS 26 Liquid Glass style yet. According to previous official statements, it will at least need to wait until the Package is stable before starting, or until Apple mandates adaptation, at which point the officials will get anxious.

Still, at least the overall progress looks decent so far:

Type Status Percentage
Source Code Migration (Material + Cupertino) Complete 100%
Test Re-enablement (unskip) Complete (#188395 closed) ~100%
API Documentation (@example directive) Wrapping up ~90%
Localizations In progress (PR #12119 open) ~80%
Publishing to pub.dev Not complete (publish_to: none) 0%
M3 Expressive New Features Just started <5%
iOS 26 Liquid Glass Not started 0%
flutter_test Decoupling Not complete ~0%

Judging from the current situation, the new version in August probably won't see the official release of this decoupling. A preview version should still be hopeful. As for Liquid Glass, the second half of the year might be a bit uncertain; we probably won't see a shadow of it until 2027. Unless Apple's September conference brings new policies to stimulate things, it feels like neither Flutter nor CMP is very keen on Liquid Glass, since this thing indeed puts a lot of pressure on custom-rendering scenarios.

RN says this wave is in my favor.

If this decoupled package isn't released in August, it seems problematic, because the Framework froze UI package updates in flutter/flutter in April. If the August version doesn't release the package, it means there will be no UI updates or fixes at all. This seems a bit unreasonable. With one month left, it depends on whether the officials can wrap it up. Looking at the current progress, wrapping it up shouldn't be a big problem, so we can look forward to it.

Comments

Top 1 from juejin.cn, machine-translated. The original thread is authoritative.

xSILENCEx

Is Guo Lao busy now?