如何在Flutter提供程序包中正确使用使用者

问题描述

这是错误消息

: The following NoSuchMethodError was thrown building Consumer<PageOffsetNotifier>(dirty,: dependencies: [_InheritedProviderScope<PageOffsetNotifier>]):
: The method 'unary-' was called on null.
: Receiver: null
: Tried calling: unary-()

这是消费者类

class LeopardImage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Consumer<PageOffsetNotifier>(
      builder: (context,notifier,child) => Positioned(
          width:300,left: -notifier.offset,child: child,),child: Image.asset('assets/leopard.png'),);
  }
}

此处 PageOffsetNotifier 是扩展了 ChangeNotifier 并传递给 ChangeNotifierProvider

的类

通知程序会在将一页滑到另一页并执行所需功能时检测到偏移值的变化....

请告诉我消费者中我缺少什么或做错了什么,结果是我收到了此错误

解决方法

使用提供程序将上下文从页面传递到另一个页面。那么使用它的对象总是明智的选择

ChangeNotifierProvider.value(
    value: object from Provider,child: the page you want to move
)
,

其父窗口小部件将是:

ChangeNotiferProvider<ClassName>(
    
   oncreate: (context)=>ClassName(),),

您可以在其中使用消费者。