Flutter中stack的children声明之间有什么区别

时间:2019-06-27 12:20:09

标签: animation flutter dart stack widget

我在代码中写了List和[items]。当使用[item]时,动画可以正常工作,但是在List的情况下,动画根本不起作用。这两个声明有什么区别?

P.S。我真是个新手。希望得到一些帮助。

class _MyAppState extends State<MyApp> with TickerProviderStateMixin {
  List<Widget> cards = [];
  AnimationController _controller;
  double _point = 2.3;

  Widget _initCard(int index) {
    Animation _animLeft = Tween(begin: _point * index, end: _point * 8 * index)
        .animate(CurvedAnimation(parent: _controller, curve: Curves.linear))
          ..addListener(() {
            setState(() {});
          });

    return Container(
      width: 50.0,
      height: 50.0,
      color: Colors.red
      margin: EdgeInsets.only(
          left: _animLeft.value.toDouble(),
    );
  }

  @override
  void initState() {
    _controller = AnimationController(vsync: this, duration: Duration(seconds: 3));
    for (int i = 0; i < 5; ++i) {
      cards.add(_initCard(i));
    }
    _controller.forward();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Container(
            width: 320,
            height: 520,
            color: Colors.deepOrange,
            child: Stack(
              overflow: Overflow.visible,
              children: cards,
      //         children: <Widget>[
      //           _initCard(0),
      //           _initCard(1),
      // ],
    )));
  }
}

1 个答案:

答案 0 :(得分:0)

堆栈用于相对安排孩子。如果要显示某些数据的列表,请使用Listview或Listview.Builder()。

如果只想使用Stack,则可以使用Position和Center小部件显示数据