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
。这取决于您的应用程序逻辑。
我正在尝试在我的 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
。这取决于您的应用程序逻辑。