【发布时间】:2020-09-29 03:11:50
【问题描述】:
我已经实现了一个 Swier 小部件,它在卡片中显示书籍信息,下一步是当卡片被粘贴以推送新页面时,代码如下:
class CardSwiper extends StatelessWidget {
final List<Book> books;
CardSwiper(this.books);
@override
Widget build(BuildContext context) {
return new Scaffold(
backgroundColor: Colors.blueGrey,
body: new Swiper(
//containerHeight: 25.0,
itemBuilder: (BuildContext context, int index) {
return _getSwiperCardContent(index, context);
},
indicatorLayout: PageIndicatorLayout.COLOR,
autoplay: false,
itemCount: books.length,
pagination: null,
control: null,
viewportFraction: 0.6,
scale: 0.9,
));
}
_getSwiperCardContent(int index, BuildContext context){
return Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(7.0),
),
elevation: 10,
color: Colors.white,
child: Column(
children: <Widget>[
Flexible(
child: Align(
alignment: Alignment.center,
child: InkWell(
onTap: _goToBookPage(context),
child: Image.network(
this.books[index].picture,
),
)
),
flex: 6,
),
Flexible(
child: Align(
alignment: Alignment.center,
child: Container(
child: Text(
this.books[index].title,
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
),
),
flex: 1,
),
Flexible(
child: Align(
alignment: Alignment.center,
child: Text(
this.books[index].author,
style: TextStyle(
color: Colors.grey[500],
),
),
),
flex: 1,
)
],
),
);
}
_goToBookPage(BuildContext context){
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => BookPage("title", this.books)));
}
}
结果如下错误:
在构建期间调用 setState() 或 markNeedsBuild()。
'package:flutter/src/widgets/navigator.dart':断言失败:第 1762 行 pos 12:'!_debugLocked':不正确。
当点击 Swiper 项目时,我应该如何实现新的 _goToBookPage 方法?
【问题讨论】:
标签: flutter push swiper navigator