参数 'pageController' 的值不能为 'null',因为它的类型,但隐含的默认值是 'null'
Posted
技术标签:
【中文标题】参数 \'pageController\' 的值不能为 \'null\',因为它的类型,但隐含的默认值是 \'null\'【英文标题】:The parameter 'pageController' can't have a value of 'null' because of its type, but the implicit default value is 'null'参数 'pageController' 的值不能为 'null',因为它的类型,但隐含的默认值是 'null' 【发布时间】:2021-11-12 15:43:33 【问题描述】:我从 github 复制了这段代码,但出现错误:
BubbleIndicatorPainter(
this.dxTarget = 125.0,
this.dxEntry = 25.0,
this.radius = 21.0,
this.dy = 25.0,
this.pageController)
: super(repaint: pageController)
painter = Paint()
..color = CustomTheme.white
..style = PaintingStyle.fill;
特别是,BubbleIndicatorPainter 获得:
必须初始化不可为空的实例字段“painter”。
并且 pageController 得到:
参数'pageController'因其类型不能有'null'的值,但隐含的默认值为'null'。
我认为它们是相关的,但我不知道如何解决,并且将 required 添加到 this.pageController 并没有解决问题。 感谢您的回答
【问题讨论】:
能把全班的代码加进去吗? 【参考方案1】:没有看到您的其余代码 - 您是否向 BubbleIndicatorPainter() 传递了一个有效的 PageController() 对象?
您的来源似乎是from here?
如果您使用 null 安全性进行编译,则可以为 null 的变量将具有带有“?”的声明后缀。从上面的链接中,pageController 被定义为不可为空。
final PageController pageController;
如果它可以为 null,则声明将是:
final PageController? pageController;
查看链接源中的 build(),pageController.position 的访问没有进行 null 检查,因此您不能有 null pageController。
错误中的“默认”是声明中的默认值,如果未提供,则“隐式”为空。例如:
class MyClass
Color color;
MyClass(this.color = Colors.white);
“color”的“隐式默认值”是“Colors.white” - 如果您不向 MyClass() 提供一个值,则分配的值,即:
MyClass myclass = MyClass(color: Colors.blue); //myclass.color will be Colors.blue
MyClass myclass = MyClass() // myclass.color will be Colors.white
如果 MyClass 是:
class MyClass
Color? color;
MyClass(this.color);
color 的隐式默认值将是“null”,因为没有提供默认值(这是允许的,因为它是用“?”后缀声明的)。即:
MyClass myclass = MyClass(color: Colors.blue); //myclass.color will be Colors.blue
MyClass myclass = MyClass() // myclass.color will be null
查看 BubbleIndicatorPainter() 它没有为 this.pageController 提供默认值,这意味着隐式默认值为“null”(这是不允许的,因为它在类型后没有“?”。 )
【讨论】:
不是这个特定的存储库,但这个类是相同的。我尝试做你列出的事情,但错误刚刚改变。我通过复制画家的初始化并将其粘贴到构造函数之外来解决。我不知道为什么它会起作用,但它确实起作用了以上是关于参数 'pageController' 的值不能为 'null',因为它的类型,但隐含的默认值是 'null'的主要内容,如果未能解决你的问题,请参考以下文章
ScrollView with PageControl 的几个问题