Index
1.Flutterフレームワーク
2.AndroidStudioで開発できる
3.UIの記載はネストを多用する
4.UIとビジネスロジックを分けて書く
5.KotlinとSwiftによる書き分けが必要な場合がある
6.Dartプログラムのエントリーポイント
7.使用パッケージの宣言
8.ホットリロードで一回一回ビルドしなくてもいい
9.動作確認
10.アプリ公開
1.Flutterフレームワーク
2018年12月にGoogleからリリースされた、モバイルアプリ開発用のフレームワーク。
Dart言語
従来ならば、AndroidならKotlin
iOSであればSwift
という、それぞれの言語を覚えなければいけないが
Flutterの場合は、DartというJavaライクな言語を覚えるだけで
両方の開発ができ、学習コストを抑えることができる。
2.AndroidStudioで開発できる
AndroidStudioのインストール
Flutterのインストール
3.UIの記載はネストを多用する
画面を構成するコンポーネントはWidgetというクラスが基底クラスにあり
各コンポーネントはWidgetを継承する。
Widgetを並べることで画面を作っていく。
コード
const Text.rich(
TextSpan(
text: 'Hello', // default text style
children: <TextSpan>[
TextSpan(text: ' beautiful ', style: TextStyle(fontStyle: FontStyle.italic)),
TextSpan(text: 'world', style: TextStyle(fontWeight: FontWeight.bold)),
],
),
)
4.UIとビジネスロジックを分けて書く
BLoC(BusinessLogicComponent)というアーキテクチャを用いることで、UIとビジネスロジックを分けて書くことができるようになる
BLoCパターンを用いることにより、次のことができるようになる
・ソースファイルごとの責務を明確化し、ソースの見通しがよくなる
・イベントハンドラ(StreamBuilder)を使って、状態管理をできる
参考URL)長めだけどたぶんわかりやすいBLoCパターンの解説
https://qiita.com/kabochapo/items/8738223894fb74f952d3
5.KotlinとSwiftによる書き分けが必要な場合がある
UI部分、HTTP通信、内部ストレージへの保存などは一つのソースで書くことができるが
担当したプロダクトにおいてFirebaseとAzureNotificationHubsを利用したプッシュ通知をすることがあり、
Firebaseに端末を登録をするところまではDart記載で共通だが、
プッシュ通知の送信先を指示する部分であるAzureNotificationHubsへの端末識別情報の登録部分は、
Dartが対応していない部分であり、KotlinとSwiftで書き分ける必要がある。
6.Dartプログラムのエントリーポイント
以下のように、C言語などと同じで、main()から始まる
// Copyright 2018 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
appBar: AppBar(
title: const Text('Welcome to Flutter'),
),
body: const Center(
child: Text('Hello World'),
),
),
);
}
}
参考URL)
https://docs.flutter.dev/get-started/codelab
7.依存パッケージの宣言
pubspec.yamlという設定ファイルで、HTTP通信や内部ストレージアクセスなど、使用するパッケージを宣言する。
また、「version」でアプリバージョンを設定する
name: <project name>
description: A new Flutter project.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter: # Required for every Flutter project
sdk: flutter # Required for every Flutter project
http: '>=0.12.0 <0.13.0'
cupertino_icons: ^1.0.2 # Only required if you use Cupertino (iOS style) icons
dev_dependencies:
flutter_test:
sdk: flutter # Required for a Flutter project that includes tests
flutter:
uses-material-design: true # Required if you use the Material icon font
assets: # Lists assets, such as image files
- images/a_dot_burr.jpeg
- images/a_dot_ham.jpeg
fonts: # Required if your app uses custom fonts
- family: Schyler
fonts:
- asset: fonts/Schyler-Regular.ttf
- asset: fonts/Schyler-Italic.ttf
style: italic
- family: Trajan Pro
fonts:
- asset: fonts/TrajanPro.ttf
- asset: fonts/TrajanPro_Bold.ttf
weight: 700
参考URL)
https://docs.flutter.dev/development/tools/pubspec
宣言したパッケージはビルド時にダウンロードされる
Flutterルートに.pubspecという隠しフォルダができ
そこにパッケージがダウンロードされてビルドに使用される
8.ホットリロードで一回一回ビルドしなくてもいい
Flutterにはホットリロードという機能があり
UIを修正した際に修正が即反映される
main関数を再度実行することなく、イベントハンドラの部分のみが処理される
①メインカラーをblueに指定
②タイトルやボタンの色がblue
③メインカラーをyellowに指定してソースを保存
④タイトルやボタンの色がyellow
9.動作確認
Androidのエミュレータ、実機
iPhoneのシミュレータ、実機
で確認を行うことができます。
Androidエミュレータ起動
iPhoneシミュレータ起動
10.アプリ公開
テスト完了後、アプリ審査に提出
AndroidであればGooglePlayConsole、
iOSであればAppleDeveloperから
作成したアプリを審査に提出する
アプリの作成ルールに違反していないか審査され、問題がなければ公開の流れとなる