【问题标题】:The instance member 'barberData' can't be accessed in an initializer [duplicate]无法在初始化程序中访问实例成员“barberData”[重复]
【发布时间】: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' 无法在初始化程序中访问。 尝试用不同的表达式替换对实例成员的引用"

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您不能在初始化程序中添加未来变量。下面的示例将解决您的问题。

    class HomeB extends StatefulWidget {
      const HomeB({Key? key}) : super(key: key);
    
      @override
      _HomeBState createState() => _HomeBState();
    }
    
    class _HomeBState extends State<HomeB> {
    
      Map<String, dynamic> barberData = {};
      final tabs = [
        widget1(),
        widget2(),
        widget3,
      ];
    
      @override
      void initState() {
        _getDataAndPrint();
        super.initState();
      }
    
      Future<void> _getDataAndPrint() async {
        barberData = await getBarberData();
    tabs.add(ProfileB(barberData: barberData,);  
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多