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
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
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
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
Thumbnail
這篇,是延續之前的視覺筆記創作出的圖解版 那就廢話不多說,直接看圖吧 更多視覺筆記、圖像思維知識或疑問,歡迎加入圖像思維研究室提問喔 https://line.me/ti/g2/Vo4qwpJiOjsKe8c29jpnAQ
Thumbnail
這篇,是延續之前的視覺筆記創作出的圖解版 那就廢話不多說,直接看圖吧 更多視覺筆記、圖像思維知識或疑問,歡迎加入圖像思維研究室提問喔 https://line.me/ti/g2/Vo4qwpJiOjsKe8c29jpnAQ
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News