虽然我可以理解必须“复制”所有内容的麻烦,但这是您应该这样做的方式。
数据在Flutter中是不可变的。您无法对其进行突变,因此不得不克隆具有不同属性的它们。
因此,您的假设是正确的:如果要修改嵌套属性,则也必须克隆其所有父级。这导致:
final ThemeData theme = Theme.of(context);
theme.copyWith(
textTheme: theme.textTheme.copyWith(
subhead: theme.textTheme.subhead.copyWith(
fontSize: 30.0,
),
),
);
再次:您无法避免。