【发布时间】:2021-10-12 14:39:47
【问题描述】:
我编写了一个在两个小部件之间发送地图的代码,当我将地图从第一个代码发送到另一个时出现此错误。有人知道我的问题是什么,我该如何解决?
这是第一个代码的相关部分:
class HomeB extends StatefulWidget {
const HomeB({Key? key}) : super(key: key);
@override
_HomeBState createState() => _HomeBState();
}
class _HomeBState extends State<HomeB> {
Map<String, dynamic> barberData = {};
@override
void initState() {
_getDataAndPrint();
super.initState();
}
Future<void> _getDataAndPrint() async {
barberData = await getBarberData();
}
final tabs = [
widget1(),
widget2(),
widget3,
ProfileB(barberData: barberData,) // here I get this error
];
这是获取地图的代码:
class ProfileB extends StatefulWidget {
Map<String, dynamic> barberData;
ProfileB({Key? key, required this.barberData}) : super(key: key);
@override
_ProfileBState createState() => _ProfileBState();
}
class _ProfileBState extends State<ProfileB> {
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Scaffold(
body: SafeArea(
child: SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: size.height - 90,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(
top: size.height * .005,
),
child: Center(
child: Text(
widget.barberData["field1"],
style: TextStyle(
fontSize: size.width * .037,
fontWeight: FontWeight.bold,
),
),
),
)
],
),
),
),
),
);
}
}
我得到的错误:
“错误:无法在字段初始化程序中访问 'this' 以读取 'barberData'。 ProfileB(barberData: barberData,)"
"实例成员 'barberData' 无法在初始化程序中访问。 尝试用不同的表达式替换对实例成员的引用"
【问题讨论】: