下からパネルが上がってくるような、スライドアップパネルを実装したい!
本記事ではそんな要望にお答えします。
sliding_up_panel パッケージを利用した、スライドアップパネルの実装方法について解説します。
基本的な使い方から、カスタマイズ方法まで解説します。
以下のようなUIを簡単に実装することが可能です。
ぜひ読んでみて実装してみてください!
基本的な使い方
基本的な使い方について解説していきます。
準備
まず準備として、パッケージのインストールと、
Dartファイルへのインポート文の追加を行います。
パッケージのインストール
CLI(macならターミナル)で、自分のプロジェクトのルートにて
以下のコマンドを実行しパッケージをインストールします。
flutter pub add sliding_up_panel
パッケージのインポート
実装したいDartファイルの上部に以下のインポート文を追加し、
パッケージをインポートします。
import 'package:sliding_up_panel/sliding_up_panel.dart';
実装
実装方法について解説します。
任意の場所にSlidingUpPanel
ウィジェットを追加します。
body
プロパティに背景で表示するウィジェットを、pannel
プロパティにスライドアップパネルに表示したいウィジェットを配置します。
SlidingUpPanel(
body: // ・・・
panel: // ・・・
),
import 'package:flutter/material.dart';
import 'package:sliding_up_panel/sliding_up_panel.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: MyWidget(),
);
}
}
class MyWidget extends StatelessWidget {
const MyWidget({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.red[200],
body: SlidingUpPanel(
body: const Center(
child: Text('Hello World!'),
),
panel: const Center(
child: Text('こんにちは世界!'),
),
),
);
}
}
カスタマイズ方法
カスタマイズ方法について解説していきます。
最小化時に表示するウィジェットの設定
最小化時(下部に表示されている時)に表示するウィジェットを、collapsed
プロパティにて設定できます。
SlidingUpPanel(
body: const Center(
child: Text('Hello World!'),
),
panel: const Center(
child: Text('こんにちは世界!'),
),
collapsed: const Center(
child: Text('テスト'),
),
),
高さの指定
minHeight
プロパティにて、最小化時の高さを、maxHeight
プロパティにて、最大化時の高さを指定可能です。
SlidingUpPanel(
body: const Center(
child: Text('Hello World!'),
),
panel: const Center(
child: Text('こんにちは世界!'),
),
minHeight: 300,
maxHeight: 800,
),
枠線
border
プロパティにて、枠線の様々な設定が可能です。
SlidingUpPanel(
body: const Center(
child: Text('Hello World!'),
),
panel: const Center(
child: Text('こんにちは世界!'),
),
border: const Border(
top: BorderSide(
color: Colors.blue,
width: 5,
),
),
),
また、borderRadius
プロパティにて、パネルの角を角丸にすることが可能です。
SlidingUpPanel(
body: const Center(
child: Text('Hello World!'),
),
panel: const Center(
child: Text('こんにちは世界!'),
),
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(24),
topRight: Radius.circular(24),
),
),
パネルの背景色
color
プロパティにてパネルの背景色を設定可能です。
SlidingUpPanel(
body: const Center(
child: Text('Hello World!'),
),
panel: const Center(
child: Text('こんにちは世界!'),
),
color: Colors.yellow[200]!,
),
他にもさまざまなカスタマイズが可能です!
詳しくは、こちらをご確認ください。
まとめ
本記事では、sliding_up_panel パッケージを利用した、スライドアップパネルの実装方法について解説しました。
基本的な使い方から、カスタマイズ方法まで解説しました。
いかがだったでしょうか?
シンプルで、とても簡単に実装できることがおわかりいただけたかと思います。
ぜひあなたのアプリに実装してみてください!
本記事があなたのアプリ開発の一助となれば幸いです。
編集後記(2022/10/12)
昨日、Flutter と、ゲームエンジンのFlame を使って
ブロック崩しのゲームを作成しました。
一画面のみの簡単な構成ですが、
ちゃんと遊べるものとなっています。
作成難易度ですが、ちょっと数学の知識が必要ではあるものの、
Flameのおかげでそこまで難しくはなかったと思います。
というか、作っていてとても楽しかったです。
目に見えて動くものを作るのは、楽しいものですね。
動作の動画やソースコードは以下のGitHubにて見ることができます。
是非参考にしてみてください。
(スターいただけるととても喜びます。)
こちらについて、時間はかかりますが、いつか記事で出そうと思っていますので、
そちらもお楽しみにお待ち下さい。
週刊Flutter大学では、Flutterに関する技術記事、Flutter大学についての紹介記事を投稿していきます。
記事の更新情報はFlutter大学Twitterにて告知します。
ぜひぜひフォローをお願いいたします。