泛型部分 新版flutter编译问题

来源:5-15 带你了解Dart泛型在Flutter中的应用

慕村0493939

2021-05-24

应该又是新版编译的问题,所以问一下,照着视频写编译会报错。

class Cache<T>{
  static final Map<String, Object> _cached = Map();
  void setItem(String key, T value){
     //A value of type 'T' can't be assigned to a variable of type 'Object'. 
     _cached[key] = value;
  }
  T getItem(String key){
     //A value of type 'Object?' can't be returned from the method 'getItem' because it has a return type of 'T'.
    return _cached[key];
  }
}

是不是因为新版flutter,object和null分别不再是所有类的父类和子类,所以会报错,这段代码我改成

class Cache<T>{
  static final Map<String, Object> _cached = Map();
  void setItem(String key, T value){
    _cached[key] = value!;
  }
  T getItem(String key){
    return _cached[key] as T;
  }
}

不知道行不行

写回答

2回答

拉托尼

2021-10-30

// static final Map<String,Object> _cached = Map();
 static final  _cached = Map();

这样就可以了

0
0

CrazyCodeBoy

2021-05-25

从log上看是null安全的提示,在_cached[key]后加个!

或将T getItem(String key)变成T? getItem(String key)

0
2
慕无忌6890528
我也遇到同样的问题, 建议老师对课程进行一些视频补充, 这样在学习起来效率会高很多 。不然总是在学习的时候总是因为版本问题出现执行不成功的问题, 而且新的特性在现在的项目中肯定会使用到, 这样在实际项目开发中也会遇到各种问题 。
2022-02-18
共2条回复

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3270 问题

查看课程