我有一个名为myPage.dart
的无状态小部件。其中包含Stack
和Texts
的Stateful List View Builder
。
这是代码(我现在注释掉第二组Text
和Stateful List View Builder
:
Widget content(BuildContext context) =>
Container(
child: Stack(
children: <Widget>[
sameDayText(context),
SameDayWorkManagement(context),
// nextDayText(),
// nextDay.NextDayWorkManagement(),
],
),
);
sameDayText
没问题。可能是因为该类位于myPage.dart
内,但我似乎无法将上下文传递给sameDayWorkManagement.dart
,这是一个包含listview builder
的有状态小部件。请记住,过去一切正常。只是当我现在尝试添加本地化时,由于某种原因,sameDayWorkManagement
中的上下文似乎为空。本地化需要上下文。并且我在对文本进行本地化的sameDayWorkManagement中的代码片段中不断遇到错误。又因为上下文为空:
这里是sameDayWorkManagement.dart
中上下文为空的示例代码
Localization.of(widget.buildContext).getTranslatedValue('wakeup')
这是sameDayWorkManagement.dart
的脚本
class SameDayWorkManagement extends StatefulWidget {
BuildContext buildContext;
SameDayWorkManagement(buildContext);
@override
_SameDayWorkManagementState createState() => _SameDayWorkManagementState();
}
class _SameDayWorkManagementState extends State<SameDayWorkManagement>
with SingleTickerProviderStateMixin {
@override
Widget build(BuildContext context) {
return Container(
// backgroundColor: Color(app_background_color_blue),
child: LayoutBuilder(
builder: (context, constraints) => SafeArea(
child: Container(
child: new StoreConnector<AppState, MainPageViewModel>(
converter: (store) => MainPageViewModel.fromStore(store),
builder: ( _, viewModel) => content(viewModel, constraints),
),
),
),
),
);
}
@override
void initState () {
super.initState();
if(widget.buildContext != null) {
print("is true");
} else {
print("is not true");
}
}
在initState中,结果为is not true
更确切地说。这是myPage的图像,没有本地化,而是使用静态日语文本
第一个带有电话图标的圆点和日语文本是sameDayText
小部件。其下方的卡为sameDayWorkManagement
,其列表视图和可滚动显示。然后剩下的就是那些我现在已经注释掉的next day
我创建了一个非常丑陋的解决方法,所以我仍然希望这个问题能够解决。我的解决方法是,我使用本地化在myPage中创建了所有必要翻译文本的地图,该地图再次在其中工作。并将该映射作为参数传递给sameDayWorkManagement。并使用该地图填充我所需的文本。是的,这非常丑陋。但目前它正在工作。