この記事は「HTC Advent Calendar 2020」の6日目の記事です。
今回は、FlutterのWidgetsの1つである「Cupertino widegets」について書いていきます。
FlutterでiOSライクなアプリを作ろうとした際に、CupertinoApp
ウィジェットのCupertinothemeData
について調べた内容になります。
#Cupertino ウィジェット
Flutterといえば、マテリアルデザインを想像する方が多いと思いますが、実はCupertinoというiOS風のウィジェットも提供しています。
読み方は「クパチーノ」で、Apple本社のあるクパチーノ由来の命名のようです。
#Flutterにおけるテーマ
簡単に説明すると、Flutterでアプリ全体を統一感のあるデザインにできる仕組みです。
この仕組みを使うことで、デザインを一箇所で統一的に管理できます。例えば、iOSのステータスバーの色やテキストの色が気に入らなければカスタマイズできます。また、ダークモード用のプロパティも用意されており、簡単に実装できるようになっています。
#iOSテーマスタイルの作成
Cupertinoウィジェットを使用するために、パッケージの導入を行います。
import 'package:flutter/cupertino.dart';
CupertinoApp
ウィジェットを作成し、CupertinoThemeData
でテーマの指定を行います。
CupertinoApp
ウィジェットは、Material ComponentのMaterialApp
ウィジェットの代わりになるウィジェットです。MaterialApp
ウィジェットとほとんど同じプロパティを持ちます。
import 'package:flutter/cupertino.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return CupertinoApp(
theme: CupertinoThemeData(
barBackgroundColor: CupertinoColors.lightBackgroundGray,
// ・・・省略
}
}
上記のコードの例では、barBackgroundColor
を変更することでナビゲーションバーの背景色をライトグレーに変更しています。
CupertinoThemeData
の主なプロパティは以下に記載しておきます。
barBackgroundColor
: 上部のナビゲーションバーと下部のタブバーの背景色を変更できます。
brightness
: アプリの全体の明るさを変更できます。
primaryColor
: アプリの基本となる色を変更できます。
textTheme
: Cupertinoウィジェットで使用されるテキストのスタイルを変更できます。
画面上ではこのような色になります。
他にもCupertinoIconThemeData
を使用すれば、アイコンのテーマ変更も可能となります。