从列表中获取Classname并使用它

时间:2019-04-10 19:20:31

标签: dart flutter

我使用ScrollController作为句柄。 我想当用户滚动到card('card 1')时,它将调用view1,而card('card 2')将调用view2。我该怎么办?

'view1', 'view2'更改时,我将List data[]添加到carddata[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) {
   ....
  }
}

0 个答案:

没有答案