Flutter 數(shù)字滾動效果(兩列)

話不多說先上效果圖

數(shù)字滾動效果.gif

實現(xiàn)原理分析

  • 數(shù)據(jù)源頭:0-10數(shù)字煎殷,最后一個為你想要的數(shù)字
  • 在外層包裹一個Container,里面為SingleChildView
  • 兩列睡雇,SingleChildView設(shè)置controller和滾動效果:curve以及時長
  • 滾動到底部即可

源碼如下:

/// 數(shù)字滾動效果
///
/// created by hujintao
/// created at 2020-03-12
//
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class RollingText extends StatefulWidget {
  int leftNum;
  int rightNum;

  Color textColor;

  RollingText({
    this.leftNum = 3,
    this.rightNum = 7,
    this.textColor = const Color(0xffED9CBE),
  });

  @override
  _RollingTextState createState() => _RollingTextState();
}

class _RollingTextState extends State<RollingText> {
  List<int> leftData = [];
  List<int> rightData = [];

  ScrollController leftView = ScrollController();

  ScrollController rightView = ScrollController();

  void _leftToEnd() {
    leftView.animateTo(leftView.position.maxScrollExtent,
        duration: Duration(milliseconds: 800), curve: Curves.easeIn);
  }

  void _rightToEnd() {
    rightView.animateTo(rightView.position.maxScrollExtent,
        duration: Duration(milliseconds: 1000), curve: Curves.easeInOut);
  }

  @override
  void initState() {
    super.initState();

    leftData = [1, 2, 3, 4, 5, 6, 7, 8, 9, this.widget.leftNum];
    rightData = [1, 2, 3, 4, 5, 6, 7, 8, 9, this.widget.rightNum];
  }

  @override
  void didChangeDependencies() {
    // TODO: implement didChangeDependencies
    super.didChangeDependencies();

    Future.delayed(Duration(milliseconds: 300), () async {
      if  (this.widget.leftNum != 0){
        _leftToEnd();
      }
      _rightToEnd();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Row(
        mainAxisAlignment: MainAxisAlignment.start,
        children: <Widget>[
          //left
          this.widget.leftNum != 0 ?  Container(
            child: SingleChildScrollView(
              controller: leftView,
              child: Column(
                children: leftData.map((num) {
                  return Container(
                    child: Center(
                      child: Text(
                        '${num}',
                        style: TextStyle(
                            color: this.widget.textColor,
                            fontSize: ScreenUtil().setSp(36)),
                      ),
                    ),
                  );
                }).toList(),
              ),
            ),
//            width: ScreenUtil().setWidth(40),
            height: ScreenUtil().setWidth(40),
          ) : Container(),
          // right
          Container(
            child: SingleChildScrollView(
              controller: rightView,
              child: Column(
                children: rightData.map((num) {
                  return Container(
                    child: Center(
                      child: Text(
                        '${num}',
                        style: TextStyle(
                            color: this.widget.textColor,
                            fontSize: ScreenUtil().setSp(36)),
                      ),
                    ),
                  );
                }).toList(),
              ),
            ),
//            width: ScreenUtil().setWidth(40),
            height: ScreenUtil().setWidth(40),
          ),
        ],
      ),
    );
  }
}

//使用

this.successRate != 0
? RollingText(
    leftNum: this.successRate > 9
        ? this.successRate ~/ 10
        : 0,
    rightNum:
        this.successRate.remainder(10),
  )
: Container(),

喜歡的朋友可以點贊支持下,謝謝~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末串结,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌英上,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啤覆,死亡現(xiàn)場離奇詭異苍日,居然都是意外死亡,警方通過查閱死者的電腦和手機窗声,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門易遣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嫌佑,你說我怎么就攤上這事豆茫。” “怎么了屋摇?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵揩魂,是天一觀的道長。 經(jīng)常有香客問我炮温,道長火脉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任柒啤,我火速辦了婚禮倦挂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘担巩。我一直安慰自己方援,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布涛癌。 她就那樣靜靜地躺著犯戏,像睡著了一般送火。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上先匪,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天种吸,我揣著相機與錄音,去河邊找鬼呀非。 笑死坚俗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的岸裙。 我是一名探鬼主播猖败,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哥桥!你這毒婦竟也來了辙浑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拟糕,失蹤者是張志新(化名)和其女友劉穎判呕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體送滞,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡侠草,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了犁嗅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片边涕。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖褂微,靈堂內(nèi)的尸體忽然破棺而出功蜓,到底是詐尸還是另有隱情,我是刑警寧澤宠蚂,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布式撼,位于F島的核電站,受9級特大地震影響求厕,放射性物質(zhì)發(fā)生泄漏著隆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一呀癣、第九天 我趴在偏房一處隱蔽的房頂上張望美浦。 院中可真熱鬧,春花似錦项栏、人聲如沸浦辨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荤牍。三九已至案腺,卻和暖如春庆冕,著一層夾襖步出監(jiān)牢的瞬間康吵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工访递, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晦嵌,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓拷姿,卻偏偏與公主長得像惭载,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子响巢,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 國慶后面兩天在家學習整理了一波flutter描滔,基本把能擼過能看到的代碼都過了一遍,此文篇幅較長踪古,建議保存(star...
    Nealyang閱讀 4,340評論 1 17
  • Flutter是Google開發(fā)的一套全新的跨平臺含长、開源UI框架(本質(zhì)上就是sdk)。 支持iOS伏穆、Android...
    HarveyLegend閱讀 8,166評論 1 43
  • 本文介紹Flutter_Weather天氣模塊實現(xiàn)拘泞。效果圖如下: 首頁最外層布局實現(xiàn) 首頁包含一個頂部的城市名稱展...
    深情不及酒伴閱讀 2,329評論 1 3
  • 游記小白初次記錄旅行啦*/ω\*) 由于是旅途中趁著一些排隊等待時間編寫的,后面的敘述會比較流水賬喔枕扫。 正文開始 ...
    諳詳閱讀 564評論 0 0
  • 那一年陪腌,薩頂頂?shù)囊皇兹f物生火遍大江南北再次點燃人們探索西藏的熱情,也徹底點燃我去西藏的夢烟瞧。 那一年 神秘诗鸭,...
    靜吾1閱讀 277評論 4 5