Flutter實(shí)現(xiàn)圖片濾鏡效果
本著學(xué)習(xí)的態(tài)度,研究了一下flutter里面的ColorFilter,字面意思翻譯顏色過濾器,學(xué)習(xí)就是要舉一反三,拓展思考就把這個(gè)功能做了一個(gè)簡單的圖片濾鏡效果。(ps:圖片有點(diǎn)沒控制住,有點(diǎn)長) 效果如下:

ColorFilter 介紹
兩種使用方式
const ColorFilter.mode(Color color, BlendMode blendMode) const ColorFilter.matrix(List<double> matrix)
實(shí)現(xiàn)效果主要通過第一種方式, 首先創(chuàng)建一個(gè)MorningPainter類繼承CustomPainter, 定義三個(gè)傳入的變量
ui.Image img;
Color color;
String mode;
MorningPainter(this.img, this.color, this.mode);
@override
void paint(Canvas canvas, Size size) {
var paint = Paint();
if (color != Colors.white) {
BlendMode blendMode = BlendMode.clear;
switch (mode) {
case 'modulate':
blendMode = BlendMode.modulate;
break;
case 'difference':
blendMode = BlendMode.difference;
break;
case 'plus':
blendMode = BlendMode.plus;
break;
case 'lighten':
blendMode = BlendMode.lighten;
break;
default:
}
paint.colorFilter = ColorFilter.mode(color, blendMode);
}
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => true;
選取圖片
使用wechat_assets_picker進(jìn)行圖片的選擇,選擇之后進(jìn)行轉(zhuǎn)換
CustomPaint( size: Size(_img.width.toDouble(), _img.height.toDouble()), painter: MorningPainter(_img, currentColor, mode), )
布局
最下方的顏色選擇和模式選擇,這個(gè)沒什么可說的,使用簡單的SingleChildScrollView配合Row使用就可以了。貼出其中一段代碼
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
renderItem(Colors.yellow, '黃色'),
renderItem(Colors.red, '紅色'),
renderItem(Colors.blue, '藍(lán)色'),
renderItem(Colors.pink, '粉色'),
renderItem(Colors.orange, '橙色'),
renderItem(Colors.brown, '棕色'),
renderItem(Colors.grey, '灰色'),
],
),
),
最后的思考,學(xué)習(xí)是一件很有趣的事情, 特別是將所學(xué)到的知識運(yùn)用起來,成就感很強(qiáng)烈。
以上就是Flutter實(shí)現(xiàn)圖片濾鏡效果的詳細(xì)內(nèi)容,更多關(guān)于Flutter 圖片濾鏡的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android加載對話框同時(shí)異步執(zhí)行實(shí)現(xiàn)方法
Android中通過子線程連接網(wǎng)絡(luò)獲取資料,同時(shí)顯示加載進(jìn)度對話框給用戶的操作2012-11-11
Android實(shí)踐之帶加載效果的下拉刷新上拉加載更多
這篇文章主要給大家介紹了關(guān)于Android實(shí)踐之下拉刷新上拉加載更多的相關(guān)資料,實(shí)現(xiàn)的效果在現(xiàn)在的很多項(xiàng)目中都能用到,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
Android編程實(shí)現(xiàn)給Button添加圖片和文字的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)給Button添加圖片和文字的方法,涉及Android針對按鈕元素屬性的相關(guān)操作技巧,需要的朋友可以參考下2015-11-11
Android Activity中使用Intent實(shí)現(xiàn)頁面跳轉(zhuǎn)與參數(shù)傳遞的方法
這篇文章主要介紹了Android Activity中使用Intent實(shí)現(xiàn)頁面跳轉(zhuǎn)與參數(shù)傳遞的方法,結(jié)合實(shí)例形式簡單分析了Android中的Activity交互操作相關(guān)技巧,需要的朋友可以參考下2016-07-07
解決webview調(diào)用goBack()返回上一頁自動刷新閃白的情況
本文主要介紹了解決webview調(diào)用goBack()返回上一頁自動刷新閃白的情況。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03
Android使用CardView實(shí)現(xiàn)圓角對話框
這篇文章主要為大家詳細(xì)介紹了Android使用CardView實(shí)現(xiàn)圓角對話框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Android實(shí)現(xiàn)生成二維碼并保存到相冊
這篇文章主要介紹了如何利用Android實(shí)現(xiàn)二維碼的生成,并且保存到本地相冊。文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編學(xué)習(xí)一下2022-04-04
詳解Android自定義控件屬性TypedArray以及attrs
這篇文章主要為大家介紹了android自定義控件屬性TypedArray以及attrs,感興趣的小伙伴們可以參考一下2016-01-01

