最近業務で使う予定のあるFlutterを勉強したので、そのまとめ
Swiftでのアプリ開発経験を主にしているので、それに照らし合わせながら勉強していくのが主な勉強方法です。
まだ勉強中なので不定期で更新します。
Flutterって何?
Flutterとは、2017年にGoogleが発表したオープンソースのモバイルアプリケーションのフレームワーク。
Flutterを用いることで、Android/iOS/Webの3種類を全く同じコードで開発することができ、非常に高い生産性を実現できる。
Flutterのあれこれ
initState をオーバーライドする
// NG class _ThemeModeSelectionPageState extends State<ThemeModeSelectionPage> { ThemeMode _current = widget.mode // これはエラー @override ------ // OK class _ThemeModeSelectionPageState extends State<ThemeModeSelectionPage> { void initState() { super.initState(); _current = widget.mode; } @override
UserDafaultのようなもの(アプリを消すまで端末固有に持たせる変数)
変数のアンダーバー
Dartの変数名の先頭の(アンダーバー _
)はプライベート変数であることを示す。
int _counter = 0;
Swiftで書くと
private var counter: Int = 0
と同等の意味。 Dart vs Swiftを見るとわかりやすい。
エラー発生箇所
パッケージのバージョンエラー
# Error: Cannot run with sound null safety, because the following dependencies don't support null safety
原因: パッケージがNull Safety に対応していないバージョンのため
ex) http パッケージのサイト https://pub.dev/packages/http/versions
を確認
versionタブを確認→
プロジェクトフォルダ/pubspec.yaml
からパッケージをNull Safetyのマークのあるバージョンまで上げる。
パッケージのインストール
基本的に https://pub.dev/packages を参照して最新バージョンを利用する。
サイトからパッケージのバージョンを確認して, Null Safety
マークが
ついているバージョンをpubspec.yml
の dependencies
直下に記載する
dependencies:s http: ^0.12.0+4
terminalで下記コマンド
flutter pub get
Webブラウザ版のAPIリクエスト
MacBook pro(AndroidStadio)で、シミュレータにChromeを選択して実行。
クライアントの問題で基本的にXMLHttpRequest error
が出ると思われる。
回避方法はあると思われるが、簡単な対策としてWebブラウザ以外で実行すると通る。
テストの書き方
UIを表示して動作確認を行うIntegrationテストの他にもより単体で行うことができるテストがある。 1. Unitテスト(単体テスト) 2. Widgetテスト 3. Integrationテスト
Zen: https://zenn.dev/kazutxt/books/flutter_practice_introduction/viewer/beginner_test 公式: https://docs.flutter.dev/cookbook/testing
その他参考になった資料
Flutter研修【ミクシィ22新卒技術研修】
Dart vs Swift
- 前提としてSwiftの知識が必要だが、Swiftの分布で比較できる為理解しやすい
英語が苦手だったので、日本語訳の記事を読んだ。
Widget catalog
- https://docs.flutter.dev/development/ui/widgets
- 最低限の知識が身に付く公式チュートリアル
Flutter を MVVM で実装する
- https://wasabeef.medium.com/flutter-%E3%82%92-mvvm-%E3%81%A7%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B-861c5dbcc565
- 同チームではMVVMを採用することが多いようなのでアーキテクチャの実装勉強用