flutter_k_chart基本實(shí)現(xiàn)了火幣里面各項(xiàng)指標(biāo)線以及深度線,F(xiàn)lutter目前沒有比較好的開源組件,就自己寫了一個(gè),聲明式ui自定義起來有點(diǎn)怪怪的,但大致與android差不多,先上效果圖
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比察隅網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式察隅網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋察隅地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
使用方式
GitHub地址:
后期會(huì)持續(xù)完善,歡迎指出問題以及star
Flutter 仿抖音效果 (一) 全屏點(diǎn)愛星
Flutter 仿抖音效果 (二) 界面布局
[Flutter 仿抖音效果 (三) 視頻播放列表] ( )
項(xiàng)目地址: 持續(xù)效果更新
1.基本的布局是簡單的,外層通過Stack作為根
2.左邊點(diǎn)贊的控件組通過Align進(jìn)行統(tǒng)一布局
3.頂部控件組通過Positioned進(jìn)行布局,設(shè)置頂部距離,其實(shí)也可以用align,我們多使用幾種來習(xí)慣flutter的布局
4.底部同樣使用Positioned,設(shè)置底部距離
5.子頁面的左右滑動(dòng)使用PageView,一開始我們要從推薦開始左滑到關(guān)注,可以使用reverse屬性,不需要更多額外的操作
1.pageController監(jiān)聽
刷新頂部的下劃線時(shí),我們一樣使用StreamController刷新,這樣效率比setstate高很多
2.歌曲名走馬燈效果
這個(gè)效果看起來挺麻煩的其實(shí)實(shí)現(xiàn)起來超級(jí)的簡單用最普通的ListView就能快速的實(shí)現(xiàn)
首頁listview里面套入的是最簡單的container+text
listview添加一個(gè)ScrollController做為滑動(dòng)的控制
使用一個(gè)定時(shí)器,把listview滑到最大的位置之后,在滑回去
先通過scroController.position.maxScrollExtent獲取最大位置,
然后通過scroController.animateTo進(jìn)行滑動(dòng),因?yàn)槲以O(shè)置一次循環(huán)的時(shí)間是3000毫秒,所以滑過去和滑回來的時(shí)間各占一般 new Duration(milliseconds: (time * 0.5).toInt()),還有就是歌名沒有大于最大寬度時(shí)候其實(shí)我們不需要進(jìn)行滑動(dòng),所以判斷maxScrollExtent是否大于0來確定是否進(jìn)行滑動(dòng)動(dòng)畫
有一個(gè)需求,是仿企業(yè)照微信的多選(效果大家自己去看)。我想到了兩種方案:
思路:我們直接通過listview.builder是沒辦法自定義SliverChildBuilderDelegate,我們可以通過listview.custom來自定義SliverChildBuilderDelegate,通過自定義我們可以重寫didFinishLayout方法,拿到里面緩存的第一個(gè)item和最后一個(gè)item??梢奿tem的跟緩存item是差5個(gè)的,可以間接算出來,后面發(fā)現(xiàn)其實(shí)不太行,上下滑動(dòng)之后會(huì)顯示之前滑動(dòng)時(shí)候的可見位置。 正解是:這個(gè)里面還有個(gè)estimateMaxScrollOffset方法,正常來說通過它可以獲取到可見的第一個(gè)和最后一個(gè)item位置。但是我一開始使用這個(gè)方法,不會(huì)被回調(diào),后面不知道修改了什么,就會(huì)回調(diào),然后這個(gè)位置是準(zhǔn)確的。
看下listview.builder的源碼
我們可以看到childrenDelegate是直接定義好了的。
在看看listview.custom 的源碼
childrenDelegate這個(gè)是一個(gè)必傳參數(shù)。
在玩安卓上有款組件化開源app的項(xiàng)目,一款模仿 Eyepetizer | 開眼視頻的 開源app,這款app設(shè)計(jì)風(fēng)格特別喜歡的,比較簡潔,美觀,然后最近又在學(xué)flutter的知識(shí),于是就寫了一款flutter版本的開源短視頻,效果也是聽不錯(cuò)的,廢話不多說,先上效果圖。
先附上項(xiàng)目地址:
項(xiàng)目api會(huì)在后面的參考鏈接里,或者直接項(xiàng)目內(nèi)查看。
項(xiàng)目地址:
更新:6/30 項(xiàng)目新增下拉刷新,上拉加載功能
kotlin版本開眼短視頻開發(fā)中,敬請期待...
總結(jié):在此感謝參考的伙伴的文章,寫的也很好,然后我將這個(gè)項(xiàng)目改寫成了flutter,當(dāng)中也學(xué)習(xí)到了很多flutter相關(guān)的知識(shí),后續(xù)還有繼續(xù)鞏固,不斷學(xué)習(xí)。
參考鏈接(包含本項(xiàng)目的api)
項(xiàng)目地址: 持續(xù)效果更新
flutter 有個(gè)onTapUp 事件,字面意思就是 點(diǎn)擊抬起的,會(huì)返回 TapUpDetails details ,通過 localPosition 屬性就能獲取到x,y坐標(biāo)
計(jì)算double 并不復(fù)雜,每次點(diǎn)擊的時(shí)候記錄下當(dāng)前的事件戳,只要兩個(gè)點(diǎn)擊的時(shí)間戳和坐標(biāo)距離小于自己設(shè)定的閾值,就可以視為雙擊事件
實(shí)現(xiàn)雙擊
我們使用OverlayEntry 控件,控件詳細(xì)介紹
效果一共有 縮小 → 上移 → 放大 → 消失
第一組動(dòng)畫(縮小 上移) → 第二組動(dòng)畫(放大 消失)
flutter 動(dòng)畫需要兩個(gè)類
AnimationController 負(fù)責(zé)管理動(dòng)畫
Animation 負(fù)責(zé)具體值操作
然后通過 Transform.scale 函數(shù)的,對scale值進(jìn)行改變
補(bǔ)全第一組動(dòng)畫
現(xiàn)實(shí)
項(xiàng)目地址: 持續(xù)效果更新