flutter滚动Text文本

GlobalKey _scrollTextKey = new GlobalKey();
Timer _scrollTextTimer;
ScrollController _controller;
int index=0;

@override
  void initState() {
    // TODO: implement initState
    super.initState();
    _controller = new ScrollController(initialScrollOffset: 0);
	if(!_controller.hasClients){//防止要滚动的文本控件需不显示时(如没有拿到数据)				  ScrollController没有能滚动的对象,导致_controller.animateTo()报空指针
      WidgetsBinding.instance.addPostFrameCallback((callback){
        _scrollTextTimer= Timer.periodic(new Duration(seconds: 2), (timer){
          if(_gonggaoKey.currentContext==null){
            index+=44;
          }else{
            index+=_scrollTextKey.currentContext.size.height.toInt();
            _controller.animateTo((index).toDouble(), duration: new Duration(seconds: 2), curve: Curves.easeOutSine);
            //滚动到底部从头开始
            if((index-_scrollTextKey .currentContext.size.height.toInt()).toDouble()>_controller.position.maxScrollExtent){
              _controller.jumpTo(_controller.position.minScrollExtent);
              index=0;
            }
          }


        });

      });
    }
  }
  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    _controller.dispose();
    _scrollTextTimer?.cancel();
    _scrollTextTimer = null;

  }

_scollTextView(){
		return ListView.builder(
                key:_scrollTextKey,
                scrollDirection: Axis.vertical,  // 纵向滚动
                controller: _controller,  // 滚动的controller
                itemExtent: ScreenUtil().setHeight(72),
                physics: new NeverScrollableScrollPhysics(),
                itemCount: 3,
                itemBuilder: (context, index) {
                  return Container(
                    alignment: Alignment.centerLeft,
                    child: WTextView('滚动文本',style: getTextStyle(fontSize: ScreenUtil().setSp(24)),),
                  );
                },
              )
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值