【Flutter】Liquid Glassを最速?で実装してみた!
みなさんはWWDC 25見ましたか?リアルタイム視聴するために私は午前2時まで頑張って起きていました。そのWWDCの発表の中で一番目の注目だったのはやはりLiquid Glassだったと思います。
私も早速以前使用していたmacBook Air M1にインストールして遊んでいます。
ここ数日はLiquid Glassについてさまざまな議論が世界中でされています。
Flutter公式リポジトリでも対応の有無で議論になっていました。
そんな中昨日Xを見ていると気になる投稿がありました。
海外の人がFlutterでLiquid GlassをFlutterで再現してそれをパッケージとして公開したという投稿を発見!それは早速試すしかない!ということでやってみたのでまとめます!
バージョン,パッケージ
Flutterバージョン
3.32.4
パッケージ
バージョン:^0.1.1-dev.5
開発者のXアカウント
実装
今回最初にインストールしたときはdev.2が最新でしたが風呂に入って飯食ってたらいつのまにかdev.5が公開されていてdev.5のバージョンでめっちゃそれっぽい感じになっていました。
dev.2
dev.5
なので今回はdev.5を元に実装した方法を書いていきます。
詳しい実装方法はreadmeを参考にしてください。
これが今回実装したLiquid Glass使用した部分のコード全体です。
いろいろ試した結果おすすめの設定を適用しています。
Center(
child: SizedBox(
width: 200,
height: 200,
child: LiquidGlass(
blur: 2,
settings: LiquidGlassSettings(
thickness: 42,
lightIntensity: 1,
ambientStrength: 1,
chromaticAberration: 1,
blend:10,
lightAngle:0.6 * pi,
),
shape: LiquidRoundedRectangle(
borderRadius: Radius.circular(50),
),
child: Center(
child: SizedBox(width: 80, height: 80, child: FlutterLogo()),
),
),
),
),
細かく見ていきます。
まずLiquidGlassウィジェットですがこれが本体です子ウィジェットの背景をLiquid Glassにします。shape
とchild
が必須プロパティです。
shape
は角の角度を書き込みます。LiquidRoundedRectangle
だけでなく円形にするなども用意されています。
// 角50を落とす
shape: LiquidRoundedRectangle(
borderRadius: Radius.circular(50),
),
// 円形
shape:LiquidOval(),
blur
プロパティは数字をあげると背景がぼやけていきます。
1~3くらいがおすすめですが強めのボケ感があるのもiOS 26やmacOS 26にもありましたので強めにするのもありだと思います。いろいろ調整してみてください。
最後にsettings
プロパティを紹介します。
settings
プロパティにはLiquidGlassSettings()
ウィジェットを使用します。
以下はLiquidGlassSettings()
ウィジェットの説明です。
thickness
は周囲の光の具合を調整します。1などの極端に低い数値だと境目がわからないので30~50くらいがおすすめです。先ほどのサンプルだと42になっています。lightIntensity
はガラスに当たる光の強さ。大きいほど輝きが増します。ambientStrength
は周囲の光の強さを調整します。高いと太くなってあまりかっこよくないです。chromaticAberration
は端の虹みたいなのを再現します。この値を大きくするとエッジ(縁)にカラフルなにじみ(フリンジ)が発生します。
blend
はガラス内の液体感を再現していますがREADMEにあるような移動を実装しない限りあまり関係なかったです。lightAngle
はハイライト(輝き)の方向を決めます。デフォルトで0.5 * pi
になっていて上から光があたります。先ほどのサンプルコードも0.6*pi
に設定しています
まとめ
今回紹介した liquid_glass_renderer パッケージを使えば、iOS/macOS 26で話題のLiquid GlassエフェクトをFlutterでも再現することができました。
開発途中のパッケージながら、バージョンが上がるごとにクオリティも劇的に向上していて、Flutterでここまで表現できるのかと驚かされました。
- 設定パラメータも豊富で、ガラスの厚みや光の当たり方、にじみ具合などを細かくチューニングできる
- LiquidGlass ウィジェットを囲うだけで適用できるので、UIのデザイン性を高めたいときにかなり有効
- パフォーマンス面も(現時点では)許容範囲で、アニメーションを加えればさらに魅力が増す余地あり
これは今後に期待したいパッケージですね!
FlutterでLiquid Glassを味わいたい方は、ぜひ一度触ってみてください!また、今後のアップデートにも注目しておくと面白そうです。
パッケージのリポジトリ
今回作ったアプリのリポジトリ
Discussion