我来自 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 创建一个新属性,但我不太确定......我需要有人来澄清这个虚拟问题。