dart 无法无条件调用方法“[]”,因为接收方可以为“null”,无法访问文本小部件中的数据

sczxawaw  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(94)

我是新来的。我正在制作一个应用程序,显示给定/指定位置的当前时间。我想使用路由访问数据,但这是我得到的错误:
无法无条件调用方法“[]”,因为接收方可以为“null”。
代码为:

import 'package:flutter/material.dart';

class Home extends StatefulWidget {
  const Home({super.key});

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {

  Map data = {} ;

  @override
  Widget build(BuildContext context) {
    
    final data = ModalRoute.of(context)!.settings.arguments;
    print(data);
    return Scaffold(
      body: SafeArea(
          child: Column(
            children: [
              TextButton.icon(
                onPressed: (){
                  Navigator.pushNamed(context, '/location');
                },
                icon: Icon(Icons.edit_location),
                label: Text('Edit Location'),
              ),
              SizedBox(height: 20.0),
              Row(
                children: [
                  Text(
                    data['loaction']
                  ),
                ],
              ),
            ],
          )
      ),
    );
  }
}

字符串

y53ybaqx

y53ybaqx1#

这是因为来自ModalRoute.of(context)!.settings.arguments的数据可能为null,并且您不能在null值上使用map运算符,因此初始修复可以是:将data['loaction']替换为data ?? this.data['location'],将Map data = {}替换为Map data = {'location': 'initial value'};,然后尝试

相关问题