Lang_Wang127 2021-08-23 14:24 采纳率: 100%
浏览 44
已结题

Flutter官方教程学习,有些代码报错是怎么回事?

  • 写回答

1条回答 默认 最新

  • 不担心 2021-08-24 19:02
    关注

    应该是你看的教程没有及时更新的原因,flutter前几个月有个比较大的更新(2.12.xx以上),就是要求空安全.
    你看的教程还没有做对应的修改.
    把鼠标移到key上可以看到错误提示,应该是说这里的key不能为null,但是你的key参数是在{}里的,在dart的语法中{}中的参数表示为可选参数,既然是可选的那就有可能为null,所以报错!
    有两个修改办法,就是在{}中的参数如果要声明为必须的,可以加上required关键字,像这样
    MyFadeTest({required Key key,this.title}):super(key: key);
    另一种就是把key放在{}的外面,这样也是表示必传的参数
    MyFadeTest(Key key,{this.title}):super(key: key);

    至于title的错误也是类似的,title在{}中表示可选的,是有可能为null的,但是你声明参数的时候他是不为空的
    final String title;
    所以你只要声明为可选参数就行了
    final String? title;

    第二个问题
    看findRenderObject()方法的定义
    RenderObject? findRenderObject();
    他返回的是一个可选的RenderObject
    但是你定义了一个RenderBox去接收他,所以提示类型不匹配的错误
    虽然RenderBox是RenderObject的子类,但是你要转换成相同类型的才可以,dart不会帮你乱转换的.
    这个函数返回的对象是可选的,所以你接收的对象最好也是可选的,因为有可能返回null.
    可以这样改
    RenderBox? rb = context.findRenderObject() as RenderBox?;

    flutter是个好东西,一定是个趋势,加油!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月2日
  • 已采纳回答 8月25日
  • 创建了问题 8月23日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。