问题描述
这是从源代码逐步复制的代码(Fidev设计挑战),但出现了错误 怀疑类是MainPage和LeopardPage 已经导入了所有必要的软件包 无法找出缺少的东西
class LeopardPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
//print(MediaQuery.of(context).size.width);
return Consumer<PageOffsetNotifier>(
builder:(context,value,child)
{
return Positioned(
top: 100,left: -0.85 * value.offset,width: MediaQuery.of(context.watch()).size.width*1.6,child: child,);
},child: IgnorePointer(child: Image.asset('assets/leopard.png')),);
}}
解决方法
主类是
class _MainPageState extends State<MainPage> {
final PageController _pageController = PageController();
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) {return PageOffsetNotifier(_pageController); },child: Scaffold(
body: Stack(
children: <Widget>[
PageView(
controller: _pageController,physics: ClampingScrollPhysics(),children: <Widget>[
//LeopardPage(),VultturePage(),],),LeopardPage(),);
}
}
,
要强制 Consumer
使用 ChangeNotifier
,您应该提供它之前,即
class LeopardPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => PageOffsetNotifier(),// lazy creation of model
child: Consumer<PageOffsetNotifier>(
builder:(context,value,child) {
return Positioned(
top: 100,left: -0.85 * value.offset,width: MediaQuery.of(context.watch()).size.width*1.6,child: child,);
},child: IgnorePointer(
child: Image.asset('assets/leopard.png')
),);
}
}