flutter好用的輪子推薦二十一-flutter製作刮刮卡效果

小小包子發表於2019-12-15

前言

Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構建高質量的原生使用者介面。

IT界著名的尼古拉斯·高爾包曾說:輪子是IT進步的階梯!熱門的框架千篇一律,好用輪子萬里挑一!Flutter作為這兩年開始崛起的跨平臺開發框架,其第三方生態相比其他成熟框架還略有不足,但輪子的數量也已經很多了。本系列文章挑選日常app開發常用的輪子分享出來,給大家提高搬磚效率,同時也希望flutter的生態越來越完善,輪子越來越多。

本系列文章準備了超過50個輪子推薦,工作原因,儘量每1-2天出一篇文章。

tip:本系列文章合適已有部分flutter基礎的開發者,入門請戳:flutter官網

正文

輪子

  • 輪子名稱:scratcher
  • 輪子概述:flutter製作刮刮卡效果.
  • 輪子作者:rykowski.dev
  • 推薦指數:★★★★
  • 常用指數:★★★
  • 效果預覽:
    效果圖

安裝

dependencies:
  scratcher: "^1.3.0"
複製程式碼
import 'package:scratcher/scratcher.dart';
複製程式碼

基本使用

使用 Scratcher 構建刮刮卡元件,使用示例如下:

Scratcher(
    brushSize: 30, //刷子大小(手指刮動的筆刷)
    threshold: 50, //完全刮開的閾值 百分比
    color: Colors.grey, //覆蓋層的顏色
    onChange: (value) { //被刮動的回撥 返回當前刮開區域百分比
        print("當前刮開比例: $value%");
    },
    onThreshold: () { //觸發完全刮開的閾值回撥
        print("已觸發設定的全部刮開閾值");
    },
    child: Container( //覆蓋層下的原本元件 一般是刮卡結果展示
        height: 150,
        width: 300,
        color: Colors.blue,
    ),
)
複製程式碼

進階使用

使用圖片作為刮卡結果,使用key來進行程式設計式控制:

final scratchKey = GlobalKey<ScratcherState>();

Scratcher(
    key: scratchKey,
    brushSize: 30,
    threshold: 50,
    color: Colors.pink,
    onChange: (value) {
        print("當前刮開比例: $value%");
    },
    onThreshold: () {
        print("已觸發設定的全部刮開閾值");
        scratchKey.currentState.reveal(duration: Duration(milliseconds: 500));
    },
    child: Container(
        width: 300,
        height: 150,
        child: Image.network('圖片地址',fit: BoxFit.cover,),
    ),
)
複製程式碼

程式設計式控制刮刮卡方法:

RaisedButton(
    child: Text("重置"),
    onPressed: (){
        scratchKey.currentState.reset();
    },
),
RaisedButton(
    child: Text("刮開"),
    onPressed: (){
        scratchKey.currentState.reveal(duration: Duration(milliseconds: 500));
    },
)
複製程式碼

引數

屬性 型別 說明
child Widget 覆蓋層下的真實元件.
threshold double 完全刮開的閾值,百分比制.
brushSize double 刮刮筆刷大小.
accuracy ScratchAccuracy 刮痕精度,一般預設即可.
color Color 覆蓋層的顏色.
image Image 使用圖片替代child元件.
onChange Function 刮動時的回撥函式,返回當前已刮開的區域面積比例.
onThreshold Function 當觸發刮開閾值時的回撥函式.

方法

方法 說明
reset 重置狀態,可設定過渡時間,引數寫法:duration: Duration(milliseconds: 500).
reveal 直接刮開,可設定過渡時間,引數寫法:duration: Duration(milliseconds: 500).

結尾

相關文章