概要
今回のブログポストではflutter_colorpicker
を使って、ユーザが簡単に色を選択できる機能を実装する方法について説明する予定です。
- flutter_colorpicker: https://pub.dev/packages/flutter_colorpicker
このブログポストで紹介するソースコードは下記のリンクで確認できます。
公式例題
flutter_colorpicker
は色んな機能を提供していますし、それを確認する例題も提供しています。当該例題は下記のリンクで確認できます。
その例題を実行すると次のような画面が確認できます。
また、flutter_colorpicker
がウェブもサポートしてるので、次のように例題をウェブでも確認できます。
ウェブに関する例題は下記のリンクで確認できます。
簡単な例題
flutter_colorpicker
がたくさんの機能を提供してるので、公式例題が少し複雑です。したがって、ここでは簡単な例題を作ってみてflutter_colorpicker
を使う方法について説明します。
この例題は下にflutter_colorpicker
を表示して、色を変更すると、上に表示されたHello world
の背景が変わるように作る予定です。
Flutterプロジェクト生成
Flutterでflutter_colorpicker
を使ってユーザが簡単に色を入力できるようにする機能を開発する方法を調べるため、次のコマンドを使ってFlutterの新しいプロジェクトを生成します。
flutter create flutter_colorpicker_example
flutter_colorpickerのインストール
flutter_colorpicker
を使うため、次のコマンドを実行してflutter_colorpicker
のパッケージをインストールします。
# cd flutter_colorpicker_example
flutter pub add flutter_colorpicker
例題作成
次はflutter_colorpicker
を使う例題を作成してみましょう。例題を作成するため./lib/main.dart
ファイルを開いて下記のように修正します。
...
class _MyHomePageState extends State<MyHomePage> {
Color _color = Colors.blue;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
children: [
Expanded(
flex: 1,
child: Container(
width: double.infinity,
color: _color,
child: const Center(
child: Text(
"Hello World",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
),
),
),
Padding(
padding: const EdgeInsets.all(20.0),
child: ColorPicker(
pickerColor: _color,
onColorChanged: (Color color) {
setState(() {
_color = color;
});
},
pickerAreaHeightPercent: 0.9,
enableAlpha: true,
paletteType: PaletteType.hsvWithHue,
),
),
],
),
),
);
}
}
この例ではflutter_colorpicker
で選択した色をState
に保存して、変更された色を画面に表示するようにしました。
class _MyHomePageState extends State<MyHomePage> {
Color _color = Colors.blue;
...
}
画面の構成はColumn
ウィジェットを使って上はflutter_colorpicker
から選択された色を表示し、下はflutter_colorpicker
を表示するようにしました。
...
@override
Widget build(BuildContext context) {
return Scaffold(
...,
body: Center(
child: Column(
children: [
Expanded(
flex: 1,
child: Container(
width: double.infinity,
color: _color,
child: const Center(
...
),
),
),
),
Padding(
padding: const EdgeInsets.all(20.0),
child: ColorPicker(
...
),
),
],
),
),
);
}
flutter_colorpicker
で色を選択するとState
に当該色が保存され、保存された色をContainer
ウィジェットの背景で表示するようにしました。そして、その上に白の文字でHello world
を表示するようにしました。
...
child: Container(
width: double.infinity,
color: _color,
child: const Center(
child: Text(
"Hello World",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
),
),
...
flutter_colorpicker
を使うためにはColorPicker
ウィジェットを使う必要があります。
...
child: ColorPicker(
pickerColor: _color,
onColorChanged: (Color color) {
setState(() {
_color = color;
});
},
pickerAreaHeightPercent: 0.9,
enableAlpha: true,
paletteType: PaletteType.hsvWithHue,
),
...
ColorPicker
を表示する時、基本色をpickerColor
に設定します。そしてColorPicker
で色が変わるとonColorChanged
の関数がコールされますし、その時選択された色をパラメータで渡して貰います。
この例題では貰った色を、setState
を使ってState
に保存した色を変えるようにして、画面に表示された色を変更できるようにしています。
確認
この例題を実行すると、次のように青色の背景でHello world
が表示されることが確認できます。
次はColorPicker
を使って好きな色に変更して見ると、次のように選択した色がうまく表示されることが確認できます。
完了
これでFlutter
でflutter_colorpicker
を使って、ユーザが色をもっと簡単に変更できる機能を実装してみました。flutter_colorpicker
は色んな機能を提供してます。まず、私が作った簡単な例で、画面にColorPicker
を表示した後、必要な機能をflutter_colorpicker
の公式例題で確認しながら追加すると、作りたいColorPicker
を簡単に実装できると思います。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。