这是从源代码逐步复制的代码(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')),
);
}}
答案 0 :(得分:0)
主类是
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(),
],
),
),
);
}
}
答案 1 :(得分:0)
要强制 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')
),
),
);
}
}