Flutter 构建一个构造函数,以便在页面视图上滚动到其他页面时调用列表中的项
我是一个初学者,正在尝试构建一个构造函数来设置列表项,当滚动到下一页时,getter调用它们在页面视图中查看。我尝试了太多的事情,但都失败了。即使避免直接帮助提高自己,我还是被困在这里,需要帮助Flutter 构建一个构造函数,以便在页面视图上滚动到其他页面时调用列表中的项,flutter,flutter-pageview,Flutter,Flutter Pageview,我是一个初学者,正在尝试构建一个构造函数来设置列表项,当滚动到下一页时,getter调用它们在页面视图中查看。我尝试了太多的事情,但都失败了。即使避免直接帮助提高自己,我还是被困在这里,需要帮助 import 'package:flutter/material.dart'; class Card { String image, name; Card({this.image, this.name}); } class CardBrain { List<Card> _c
import 'package:flutter/material.dart';
class Card {
String image, name;
Card({this.image, this.name});
}
class CardBrain {
List<Card> _cardData = [
Card(image: 'images/item1.jpg', name: 'item1'),
Card(image: 'images/item2.jpg', name: 'item2'),
];
String getCard() {
return _cardData[_cardNumber].image;
}
String getname() {
return _cardData[_cardNumber].name;
}
int _cardNumber = 0;
void nextCard(int itemNumber) {
if (_cardNumber == 0;){
itemNumber++;
}
}
}
class Images extends StatefulWidget {
@override
_ImagesState createState() => _ImagesState();
}
class _ImagesState extends State<Images> {
PageController pageController = PageController();
@override
Widget build(BuildContext context) {
return Container(
child: PageView(
onPageChanged: cardBrain.nextStory(1),
controller: pageController,
children: <Widget>[
Container(
color: Colors.white,
child: Column(
children: <Widget>[
Image.asset(cardBrain.getCard(), fit: BoxFit.fitWidth),
Text(cardBrain.getname(), ),
],
),
),
],
),
);
}
}
导入“包装:颤振/材料.省道”;
班级卡{
字符串图像、名称;
卡片({this.image,this.name});
}
卡德布莱恩班{
列表_cardData=[
卡片(图像:'images/item1.jpg',名称:'item1'),
卡片(图像:'images/item2.jpg',名称:'item2'),
];
字符串getCard(){
返回cardData[cardNumber].图像;
}
字符串getname(){
返回_cardData[_cardNumber].name;
}
int cardNumber=0;
void nextCard(int itemNumber){
如果(_cardNumber==0;){
itemNumber++;
}
}
}
类图像扩展了StatefulWidget{
@凌驾
_ImagesState createState()=>\u ImagesState();
}
类_ImagesState扩展状态{
PageController PageController=PageController();
@凌驾
小部件构建(构建上下文){
返回容器(
子:页面视图(
更改网页:cardBrain.nextStory(1),
控制器:页面控制器,
儿童:[
容器(
颜色:颜色,白色,
子:列(
儿童:[
Image.asset(cardBrain.getCard(),fit:BoxFit.fitWidth),
文本(cardBrain.getname(),),
],
),
),
],
),
);
}
}
首先,您应该使用
final
来确保公共成员变量不会被任意更改。此外,尽量使用构造函数:
class Card {
final String image;
final String name;
const Card({
this.image,
this.name
});
}
考虑重写toString()
,这对调试也很有用。使用getter而不是getX()
,因为我们不是Java语言(或任何其他没有属性的语言)。看起来好多了:
class CardBrain {
var _cardData = <Card>[
Card(image: 'images/item1.jpg', name: 'item1'),
Card(image: 'images/item2.jpg', name: 'item2'),
];
var _cardNumber = 0;
String get card => _cardData[_cardNumber].image;
String get name => _cardData[_cardNumber].name;
void nextCard(int itemNumber) {
if (_cardNumber == 0){
itemNumber++;
}
}
}
请注意,onPageChanged
需要传递一个函数,以便您可以使用(就像我上面所做的那样)<代码>索引是一个整数。使用getter,语法也会更改:
children: <Widget>[
Image.asset(cardBrain.card,
fit: BoxFit.fitWidth
),
Text(cardBrain.name),
],
首先,您应该使用
final
,以确保公共成员变量不会被任意更改。此外,尽量使用构造函数:
class Card {
final String image;
final String name;
const Card({
this.image,
this.name
});
}
考虑重写toString()
,这对调试也很有用。使用getter而不是getX()
,因为我们不是Java语言(或任何其他没有属性的语言)。看起来好多了:
class CardBrain {
var _cardData = <Card>[
Card(image: 'images/item1.jpg', name: 'item1'),
Card(image: 'images/item2.jpg', name: 'item2'),
];
var _cardNumber = 0;
String get card => _cardData[_cardNumber].image;
String get name => _cardData[_cardNumber].name;
void nextCard(int itemNumber) {
if (_cardNumber == 0){
itemNumber++;
}
}
}
请注意,onPageChanged
需要传递一个函数,以便您可以使用(就像我上面所做的那样)<代码>索引是一个整数。使用getter,语法也会更改:
children: <Widget>[
Image.asset(cardBrain.card,
fit: BoxFit.fitWidth
),
Text(cardBrain.name),
],
谢谢帮助很大,但在页面视图中滚动时仍无法进入第二个屏幕项目onPageChanged:(index)=>cardBrain.nextStory(1),“这应该是”cardBrain.nextCard(1)”我忘了编辑。即使在编辑之后,也没有得到下一张卡片的筛选。谢谢!帮助很大,但在页面视图中滚动时仍无法进入第二个屏幕项目onPageChanged:(index)=>cardBrain.nextStory(1),“这应该是”cardBrain.nextCard(1)”我忘了编辑。即使在编辑后,也不能筛选下一张卡片。