flutter bloc:变量未在 BlocBuilder 中定义

flutter bloc: variable is not defined in BlocBuilder

我正在尝试在我的 project.After 创建状态和事件 class 中使用 Flutter bloc 我有一个 LanguageLoad class:

abstract class LanguageState extends Equatable {
  const LanguageState();
  @override
  List<Object> get props => [];
}

class LanguageInitial extends LanguageState {}

class LanguageLoad extends LanguageState {
  final Locale locale;
  LanguageLoad(this.locale);
  @override
  List<Object> get props => [locale];
}

创建 bloc 后 class 我在主程序中使用 class:

    void main() {
      WidgetsFlutterBinding.ensureInitialized();
      runApp(
        BlocProvider(
            create: (_) => LanguageBloc()..add(LanguageLoadStarted()),
            child: MyApp()),
      );
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<LanguageBloc, LanguageState>(
      builder: (context, languageState) => MaterialApp(
        debugShowCheckedModeBanner: false,
        locale: languageState.locale, // locale is not defined
}

但我不知道为什么 locale: languageState.locale 中没有定义语言环境?

您不知道 languageState 的类型,您需要对其进行转换以获得 locale 值。这是我的生产应用程序的一部分:

BlocBuilder<LanguageBloc, LanguageState>(
    builder: (context, state) {
      Locale locale;
      if (state is LanguageLoaded) {
        locale = state.locale;
      }
      return MaterialApp(
        locale: locale,

在我的例子中,即使 Locale 第一次为空,我也会加载 MaterialApp。这取决于您的应用程序逻辑。