Flutter Web image hover zoom(實現圖片懸浮縮放)

更新 發佈閱讀 7 分鐘

Implement Picture zoom when hover the image.

raw-image







How to implement it?

Using AnimatedContainer to do animation and using InkWell to detect hover.

In InkWell:

InkWell(
onTap: () {
print('Tap');
},
// Detect hover here
onHover: (val) {
setState(() {
isHover = val;
print(val);
});
},
child: //Child
)

In AnimatedContainer:

AnimatedContainer(
transform: isHover ? hoverdTransform : unhoverdTransform,
// duraction time
duration: const Duration(seconds: 10),
curve: Curves.ease,
child: Image.network(
imageUrl,
fit: BoxFit.cover,
height: 200,
),
),

Full Code:

import 'dart:convert';
import 'dart:io';

import 'package:flutter/material.dart';

void main() {
runApp(
MaterialApp(
home: Home(),
),
);
}

class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ZoomAnimate(),
);
}
}

class ZoomAnimate extends StatefulWidget {
const ZoomAnimate({Key? key}) : super(key: key);

@override
State<ZoomAnimate> createState() => _ZoomAnimateState();
}

class _ZoomAnimateState extends State<ZoomAnimate> {
bool isHover = false;
String imageUrl =
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/Ash_Tree_-_geograph.org.uk_-_590710.jpg/220px-Ash_Tree_-_geograph.org.uk_-_590710.jpg";

@override
Widget build(BuildContext context) {
final hoverdTransform = Matrix4.identity()..scale(1.2);
final unhoverdTransform = Matrix4.identity()..scale(1);
return Padding(
padding: const EdgeInsets.all(8.0),
child: InkWell(
onTap: () {
print('Tap');
},
onHover: (val) {
setState(() {
isHover = val;
print(val);
});
},
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: AnimatedContainer(
transform: isHover ? hoverdTransform : unhoverdTransform,
duration: const Duration(seconds: 10),
curve: Curves.ease,
child: Image.network(
imageUrl,
fit: BoxFit.cover,
height: 200,
),
),
),
),
);
}
}

歡迎大家來我的Blog看:

1.Blog: 文章連結

2.Medium: 文章連結


留言
avatar-img
留言分享你的想法!
avatar-img
Fufu的沙龍
0會員
4內容數
Fufu的沙龍的其他內容
2022/04/26
學習並操作solidity裡的投票,並做一些小修改,顯示出來的被投票者不再是byte,而是string。
Thumbnail
2022/04/26
學習並操作solidity裡的投票,並做一些小修改,顯示出來的被投票者不再是byte,而是string。
Thumbnail
2022/04/25
此篇文是在練習並熟悉solidity與remix的操作
Thumbnail
2022/04/25
此篇文是在練習並熟悉solidity與remix的操作
Thumbnail
2022/04/24
開發工具與環境設置 安裝所需要工具 啟動 ganache-cli來啟動乙太坊測試環境 建立智能合約 HelloWorld.sol: 編譯 編譯成功的話,在build/contracts/目錄下會多出HelloWorld.json這個檔案 部署 2\_deploy\_contracts.js: 測試
Thumbnail
2022/04/24
開發工具與環境設置 安裝所需要工具 啟動 ganache-cli來啟動乙太坊測試環境 建立智能合約 HelloWorld.sol: 編譯 編譯成功的話,在build/contracts/目錄下會多出HelloWorld.json這個檔案 部署 2\_deploy\_contracts.js: 測試
Thumbnail
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
wiggle是一個非常有用的表達式,用於給層的屬性添加隨機抖動效果。這個表達式特別適合於創建自然、隨機的運動,例如攝像機的手持效果、文字的抖動、或者任何需要不規則運動的場景。
Thumbnail
wiggle是一個非常有用的表達式,用於給層的屬性添加隨機抖動效果。這個表達式特別適合於創建自然、隨機的運動,例如攝像機的手持效果、文字的抖動、或者任何需要不規則運動的場景。
Thumbnail
前篇測試如何把提示詞生成的圖像細節提高,這篇要測試的工作流是把任意圖像載入後經由放大模型放大,同時測試放大後重繪看看效果如何。
Thumbnail
前篇測試如何把提示詞生成的圖像細節提高,這篇要測試的工作流是把任意圖像載入後經由放大模型放大,同時測試放大後重繪看看效果如何。
Thumbnail
本篇要來討論一些目前在Stable Diffusion裡面,比較可行的向外擴展方法(Outpaint)。 向外擴展是將圖的周圍擴展開來,然後填充進新的內容,造成一種Zoom out的效果。
Thumbnail
本篇要來討論一些目前在Stable Diffusion裡面,比較可行的向外擴展方法(Outpaint)。 向外擴展是將圖的周圍擴展開來,然後填充進新的內容,造成一種Zoom out的效果。
Thumbnail
這一篇要來敘述Stable Diffusion的Automatic1111的圖生圖(img2img,簡稱i2i)功能。
Thumbnail
這一篇要來敘述Stable Diffusion的Automatic1111的圖生圖(img2img,簡稱i2i)功能。
Thumbnail
這段代碼會創建一個黑色正方形,其中包含一個螢光綠色邊條和一個顯示 "Line" 文字的正方形,邊條會逆時針旋轉。使用CSS中的position和transform屬性可以將正方形放置在畫面中央。使用animation屬性可以實現旋轉動畫。
Thumbnail
這段代碼會創建一個黑色正方形,其中包含一個螢光綠色邊條和一個顯示 "Line" 文字的正方形,邊條會逆時針旋轉。使用CSS中的position和transform屬性可以將正方形放置在畫面中央。使用animation屬性可以實現旋轉動畫。
Thumbnail
在flutter內實現當鼠標懸停時圖片縮放
Thumbnail
在flutter內實現當鼠標懸停時圖片縮放
Thumbnail
01-圖片size寫法 background-size: 12px ; 當給一個數值的時候,另一個設定為auto 參考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-size 02-圖片切換-方法1: css: .a1
Thumbnail
01-圖片size寫法 background-size: 12px ; 當給一個數值的時候,另一個設定為auto 參考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-size 02-圖片切換-方法1: css: .a1
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News