The chapter lists known issues. Currently, all known issues impacting FlexColorScheme are rooted in Flutter SDK issues and cannot be fixed in the package. All known issues are being tracked, and status changes will be updated below.
Switching Typography dynamically in Flutter SDK ThemeData is broken, see issue #103864 for more information. If it is done and the error ignored, an app doing so eventually become unstable.
The Themes Playground app contains a workaround to avoid issue #103864. The workaround is done by always using 2021 Typography, but simulating 2018 Typography. This is done by using a custom TextTheme that looks like 2018 Typography is used when using M2 theme mode. The Playground App actually always stays in 2021 Typography, but looks like it switches it. Which it does by applying a custom
TextTheme in 2021 Typography, that looks like 2018 Typography is used. All other examples also avoid the issue by only using the M3 2021 Typography and not even mimicking a switch between M2 and M3 Typography.
The above workaround is needed because the Playground app has toggles that switch Typography frequently, without the workaround it will eventually crash. With this workaround it never switches Typography, it just looks like it does, but app stays in 2021 Typography all the time. The by Themes Playground generated ThemeData config will use the actual real effective Typography. This is also fine, since an app using the theme will likely never switch used Typography. However, if it does, it will face the same issue the Playground app did. The issue is a Flutter SDK issue that FlexColorScheme cannot fix. Most likely 99% of apps will never run into this issue.
A fix PR #110870 for this issue now exists in master channel, but it is not yet available in Flutter 3.3.
In Flutter 3.0 and 3.3, when opting in on
Material widget and other SDK widgets built on it, gets no elevation when only the
elevation property is defined. It is required to also define
surfaceTintColor to get any elevation effect. When using the
Material widget itself this is easy to address. However, widgets like
BottomSheet do not expose these
Material properties and cannot be elevated.
The issue is reported and tracked here #107190 and also mentioned in the
FlexColorScheme repo here
#54. There are no good workarounds for using elevation on these widgets when
useMaterial3 is true. The options are to not use M3, if such elevations are important to your app design. One working fix is to wrap those widgets in a theme where
useMaterial3 is false, then te rest of your app can still use it. This is however a rather tedious workaround fix. Due to this current SDK
Material elevation issues when
useMaterial3 is true, it is recommended to avoid opting in on Material 3 if correctly elevated Material on Dialogs, Drawers, BottomSheet and PopupMenuButton is important for the app.
This PR #110624 addresses the default elevation issue for
Material, but it is not yet available in Flutter 3.3. It also does not fully solve the poor dark mode
actionsIconTheme are ignored when
useMaterial3 is true. This was not seen in Flutter stable 3.0.5, but is now in 3.3.0. See issue#107305, that was fixed via PR #108332 in master. The fix did not land in Flutter 3.3.0, as mentioned in issue #110878, so this issue regressed into stable 3.3 release, even though it was fixed in master 28 days before stable 3.3 release.
foregroundColor for the new Material 3 style
SliverAppBar.medium either via an
AppBarTheme or their properties, the defined color is not used by the app bar, see issue#110951.
Chip theme in Flutter 3.3 do not M3 style the plain vanilla Chip. A proposal to fix this can be tracked via issue #109470.
Cannot theme SnackBar shape independently for its different behaviors, see issue #108539.
ShapeBorder on input decorator
UnderlineInputBorder has gaps in its equality operator and hashCode in Flutter SDK, it is missing the borderRadius property. Report not yet submitted to Flutter repo.
This can be seen in the Themes Playground app where changing the controller value borderRadius on the used
UnderlineInputBorder property does not trigger a rebuild of the Theme via Listenable in the AnimatedBuilder, since the value change is not observed because the property is not included in the object equality. Equality remains true, even though one of its property values has changed. Deeper issue analysis, reproduction sample and submission as a Flutter bug still to be done.
The color branding is not applied to Widgets using elevated
Material of type
canvas in Flutter when using primary colored surface and backgrounds, and the theme's
true. This is caused by this Flutter SDK limitation and issue #90353 "Dark mode elevation overlay color is only applied to Material of type canvas, when surface and background colors are equal #90353"
Version 4.0.0 and later addresses this limitation by introducing more color blend modes that keep the colors equal in order to not be affected by this limitation. If you are using heavy color branding in dark theme mode, the overlay color may not be necessary.