Flutter: ビルドタイムにアサーションを実行する
August 21, 2024
ビルド時にアサーションしたいケース # 次のような Flutter アプリがあったとします。アプリでは myConstant という定数を使用しています。この定数は将来的に変更される ...
ビルド時にアサーションしたいケース # 次のような Flutter アプリがあったとします。アプリでは myConstant という定数を使用しています。この定数は将来的に変更される ...
Flutter のテスト実行(flutter test)前後に処理を挟むことができる仕組みが提供されています。 test/ ディレクトリの下に flutter_test_config.dart を作りましょう。コードの ...
covariant キーワードについて # 以下のコードは SubClass の method の部分でエラーになります。エラーメッセージは以下です。 'SubClass.method' ('void Function(ArgumentOfSubClass)') isn't a valid override of 'SuperClass.method' ('void Function(ArgumentOfSuperClass)'). class SuperClassArg {} class SubClassArg extends SuperClassArg {} class SuperClass { ...
公式ドキュメントの案内によると Dart のコンストラクタは6種類あるようです。 Constructors | Dart https://dart.dev/language/constructors Dart implements many types of constructors. Except for default constructors, these functions use the same name as their class. Generative constructors: Creates new instances and initializes instance variables. Default constructors: Used ...
Flutter の BoxConstraints について。 期待通りにはいかない表示 # 次のコードでは、画面に何が表示されるでしょうか? import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp( home: SizedBox( width: 100, height: 100, child: ColoredBox( color: Colors.orange, ), ), )); } 「一辺 1 ...
親から子のフィールドにアクセス # GlobalKey を使う # import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( home: MyParentWidget(), )); } class MyParentWidget extends StatelessWidget { MyParentWidget({super.key}); final myChildWidgetKey = GlobalKey<MyChildWidgetState>(); @override Widget build(BuildContext context) { return Scaffold( body: Column( children: [ Text('${myChildWidgetKey.currentState?.count ?? 0}'), IconButton( icon: const Icon(Icons.add), onPressed: () { myChildWidgetKey.currentState?.increment(); // myChildWidgetKey.currentState?.increment(); を呼び出し ...
Flutter の状態管理ライブラリの3トップ(個人的見解)である「Bloc/Cubit」「Provider」「Riverpod」について、カウンターアプ ...
Dart 言語には assert という機能があります。assert の第一引数が条件式で、こちらが true であれば何も起きず、false であれば例外が throw されます。ass ...
参考 DevTools でのアプリケーションのサイズ確認について Measuring your app’s size | Flutter https://docs.flutter.dev/perf/app-size Use the app size tool | Flutter https://docs.flutter.dev/tools/devtools/app-size ツリーシェイキングについて Excluding Dart code from the release compiled executable | Flutter Community | Medium https://medium.com/flutter-community/excluding-dart-code-from-the-release-compiled-executable-7af8c18cd241 ビルド後の ...
Flutter において Dart の Stream はなくてはならない存在。たとえ開発者が意図的に使っていなかったとしても、ステート管理ライブラリの屋台骨は Stream が支えています。 StreamController() ...
ロンドン大学で MSc Computer Science: Project モジュールを履修中。 講義内容に関して記録した個人的なスタディノートです。 全 12 週のうち 6〜12 週目の内容を記録します。( ...
ロンドン大学で MSc Computer Science: Software design and programming モジュールを履修中。 講義内容に関して記録した個人的なスタディノートです。 全 12 週のうち 6〜12 週目の内容を記録しま ...
既存のクラスのコードそのものには手を入れる事なくメソッドを追加する方法が提供されています。 Extension methods | Dart https://dart.dev/language/extension-methods 使用例 # calculator.dart class Calculator { int value = 0; void add(int a, int b) { value = ...
素敵なブログ記事を見かけたので記録。ウィジェットテスト中に、そのときのウィジェットのスクリーンショットを画像で取得することができます。 Taking screenshots during ...
ほんとにただの1行メモで恐縮ですが、Flutter の DevTools の説明は以下の動画がヒジョーに分かりやすい! Dive into DevTools - YouTube https://www.youtube.com/watch?v=_EYk-E29edo 動画では DevTools でできる以下のことが ...
StatefulWidget(の State)は debugFillProperties() メソッドを持っています。これをオーバーライドするとデバッグが少しだけ楽になります。 debugFillProperties method - State class ...
現在 Dart には Self 型を表すようなキーワードはありません。キーワードはないものの、Self 型を実現することはでき、具体的には次のように書けば実現可能 ...
通常のテスト方法 # flutter create でアプリを作成すると次のテストファイルが作られています。 myapp/test/widget_test.dart // This is a basic Flutter widget test. // // To perform an interaction with a widget in your test, use the WidgetTester // utility in the flutter_test package. For ...
次のメソッドの実行順番を確認するためにログを出力させてみた。 createState() build() setState() initState() didChangeDependencies() didUpdateWidget() deactivate() dispose() import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatefulWidget { const MyApp({ super.key, }); @override State<MyApp> createState() { print("MyApp.createState()"); return _MyAppState(); } } class _MyAppState extends State<MyApp> { int ...
Flutter でアニメーションをするにはいろいろな方法がある。こちらの記事がわかりやすい。 Flutter のお手軽にアニメーションを扱える Animated 系 Widget をすべて紹介 | by mono | Medium ...
なんとなく思いついたのでコードをメモ。 一度作成したウィジェットをキャッシュに保存しておいて、必要になったときだけウィジェットを再構築する。 次 ...
パフォーマンス改善のために、ウィジェットをキャッシュしておいて必要なときだけリビルドしたい、そんなときはこんなユーティリティウィジェットが便 ...
こんな感じです。 ChangeNotifier # import 'package:flutter/material.dart'; class Counter with ChangeNotifier { int _count = 0; int get count => _count; void increment() { _count++; notifyListeners(); } } void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { MyApp({ super.key, }); final Counter _counter = Counter(); @override Widget build(BuildContext context) { return MaterialApp( home: MyWidget( counter: _counter, ), ); } } class MyWidget extends StatelessWidget ...
Flutter で複数の InheritedWidget の値を参照しているときに、参照先ウィジェットがどのタイミングで再ビルドされるのかを確認したかった。その記録。 2つの InheritedWidget の値が同時に ...
自己理解ために InheritedWidget でのデータ保持&アクセスをステップバイステップで実装していきます。 1. InheritedWidget で保持するデータに子ウィジェットからアクセスする # count の ...
現在このブログの記事は GitLab で管理しており、ブログも Gitlab Pages でホスティングされています。バックアップも兼ねて、ブログのデータを GitHub にミラーリングしてお ...
ロンドン大学で MSc Computer Science: Project モジュールを履修中。 講義内容に関して記録した個人的なスタディノートです。 全 12 週のうち 1〜5 週目の内容を記録します。(1 ...
ロンドン大学で MSc Computer Science: Software design and programming モジュールを履修中。 講義内容に関して記録した個人的なスタディノートです。 全 12 週のうち 1〜5 週目の内容を記録します ...
初めてこの状態になったときは焦りました。対応手順をメモしておきます。 きっかけは H.264 コーデックの動画ファイルを Ubuntu で再生しようとしたときのこと。デ ...
Mac に VMware Fusion Player をインストールし、その上で Ubuntu を起動するところまでの手順をメモしていきたいと思います。 VMware Fusion は、Mac の仮想化ツールです。 VMware Fusion is a software hypervisor ...