我使用ScrollController
作为句柄。
我想当用户滚动到card('card 1')
时,它将调用view1
,而card('card 2')
将调用view2
。我该怎么办?
当'view1', 'view2'
更改时,我将List data[]
添加到card
,data[i]
将更改。
class Demo extends StatefulWidget {
@override
_Demo createState() => _Demo();
}
class _Demo extends State<Demo> {
ScrollController _scrollController;
List data = [
'view1()', 'view2()'
];
String class_name;
@override
void initState() {
super.initState();
_scrollController = ScrollController();
_scrollController.addListener(changedesc);
setState(() {
class_name = data[0];
});
}
changedesc() {
var value = _scrollController.offset.round();
var descIndex = (value / 150).round();
print(value);
setState(() {
class_name = data[descIndex];
});
}
@override
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
Container(
height: 350.0,
child: ListView(
padding: EdgeInsets.only(left: 25.0),
controller: _scrollController,
scrollDirection: Axis.horizontal,
children: <Widget>[
card('card 1'),
SizedBox(width: 15.0),
card('card 2'),
SizedBox(width: 15.0),
],
),
),
//call data[i]
//view1(), view2()
],
);
}
card(
String cardname) {
//style
}
}
class view1 extends StatelessWidget {
@override
Widget build(BuildContext ctx) {
return Center(child: Text('hello', style: TextStyle(fontSize: 24.0)));
}
}
class view2 extends StatelessWidget {
@override
Widget build(BuildContext ctx) {
....
}
}