我来自 Redux,正在学习全局状态管理的 BLoC 模式。我在定义应该将值作为属性存储在 BLoC 类中的位置以及何时应该将值存储在 States 中时遇到困难。
我有一个主页,在其中显示一些广告,具体取决于其类别(category不应为空)。我实现了一个这样的 AdsBloc:
class AdsBloc extends Bloc<AdsEvent, AdsState> {
final AdsRepository repository;
AdsBloc({@required this.repository})
: super(AdsInitial(category: Category.DOGS));
@override
Stream<AdsState> mapEventToState(
AdsEvent event,
) async* {
// my code
}
}
Run Code Online (Sandbox Code Playgroud)
这些是我的 AdsState:
abstract class AdsState {
final Category category;
AdsState({this.category});
}
class AdsInitial extends AdsState {
AdsInitial({category}) : super(category: category);
}
class AdsSuccess extends AdsState {
final PaginatedAds paginatedAds;
AdsSuccess({this.paginatedAds, category}) : super(category: category);
}
class AdsFailure extends AdsState …Run Code Online (Sandbox Code Playgroud) 在使用默认的 ButtonThemeData 轻松制作渐变按钮之前……但现在我无法弄清楚如何使用新的 MaterialButtons 正确制作自定义渐变按钮。
我正在尝试制作一个三个自定义渐变按钮,它必须使用 AppTheme 中定义的 ButtonStyle(splashColor、elevation...)。
GradientElevatedButton 使用带有渐变背景的 ElevatedButtonThemeData
GradientTextButton 使用带有渐变文本的 TextButtonThemeData
GradientOutlinedButton 使用带有渐变边框和渐变文本的 OutlinedButtonThemeData
我曾尝试用 ShaderMask 包装 ElevatedButton,但它涵盖了墨迹动画,因此无法实现我的目标。
我正在研究 Redux 与 Flutter 的结合,我有一个问题,如果你遵循 redux 架构,那么在 Flutter 中制作有状态的 widget 是否有意义?我可能认为对于动画和小部件来说,最好制作一个有状态的部件,而不是为真正的 appState 创建一个新属性,但我不太确定......我需要有人来澄清这个虚拟问题。