我有一个通用对话框,用于所有操作,例如登录和注销。构造函数看起来像这样
GenericDialog({
required String dialogTitle,
required Widget dialogContent,
});
现在我尝试将 BlocConsumer 添加到对话框中,为了使其正常工作,我需要将 Cubit 和 State 传递到构造函数中。以下是我准备的肘尺和状态
abstract class BaseState extends Equatable
class LoginState extends BaseState
class LogoutState extends BaseState
abstract class BaseCubit<S> extends Cubit<S>
class LoginCubit extends BaseCubit<LoginState>
class LogoutCubit extends BaseCubit<LogoutState>
下面是构造函数
GenericDialog({
required String dialogTitle,
required Widget dialogContent,
required BaseCubit cubit,
required BaseState state,
});
我如何使用它
GenericDialog({
dialogTitle: 'LOGIN',
dialogContent: widget,
cubit: LoginCubit,
state: LoginState,
});
当我将肘和状态传递给构造函数时,我得到
The argument type 'Type' can't be assigned to the parameter type 'BaseCubit<dynamic>'
abstract class BaseCubit<S> extends Cubit<S>
应该是 abstract class BaseCubit extends Cubit<BaseState>
。LoginCubit
的构造函数中,您将传递 : super(LoginState)
。与LogoutCubit
相同。
我认为你应该使用
BlocConsumer<T, BaseState>
来访问 GenericDialog
内的肘。GenericDialog<T extends BaseCubit> extends ... {}
BlocProvider(...)
创建您的肘尺。
您将致电
GenericDialog<LoginCubit>({ dialogTitle: 'LOGIN', dialogContent: widget })
。
我用我自己的项目
做了类似的事情最后,这对我有用
要将肘节和状态传递给另一个类,您必须像这样声明该类
class YourClassName<T extends Cubit<S>, S> {
const YourClassName();
}
要将 cubit 和 state 传递给函数,你必须像这样声明函数
void YourFunctionName<T extends Cubit<S>, S> {
// your code here
}