2011年にGoogleがJavaScriptを置き換える新しいウェブプログラミング言語の標準化を目指して公開したプログラミング言語。 Java風の構文を持ち、クラスベースのオブジェクト指向プログラミングをサポートする。また、Isolateというshared nothingなスレッド機構を持つ。
記述されたプログラムは「Dart VM」と呼ばれる仮想マシン上で動作する。またライブラリ「dart2js」でJavaScriptへ変換でき、Dartをサポートしていないブラウザでも実行可能。
*1:Google Developers Blog: Dart 1.0: A stable SDK for structured web apps
*2:Chromium Blog: Ecma forms TC52 for Dart Standardization
はじめに APIの通信の進捗やファイルのダウンロードの進捗を表示をdioパッケージを用いて実現する方法を書いたものです。 実行環境は以下のとおりです。(一部省略) $ flutter doctor -v [✓] Flutter (Channel stable, 3.27.4, on macOS 15.3.2 24D81 darwin-arm64, locale ja-JP) • Flutter version 3.27.4 on channel stable at /Users/name/fvm/versions/3.27.4 • Upstream repository https://git…
こんにちは。エキサイトでアプリエンジニアをしている岡島です。 今回はPangleのメディエーション時に起きたエラーと今回行った対処について共有していこうと思います。 環境 Flutter: 3.24.2 Dart: 3.5.2 CocoaPods: 1.15.2 gma_mediation_pangle: 1.1.0 発生した問題 Pangleのメディエーションを行い、pod installをすると下記エラーが出ました。 [!] The 'Pods-Runner' target has transitive dependencies that include statically linked…
はじめに こんにちは、エムティーアイ Advent Calendar 2024 の12月18日分の執筆を担当させていただく新卒エンジニアの小林です。 今回は、前回の【Flutter】BottomNavigationBarの状態管理方法3選の番外編として、GoRouterを使ってBottomNavigationBarの画面切り替えを行う方法についてご紹介します。 GoRouter導入済みのFlutterプロジェクトでBottomNavigationBarを追加する際、GoRouterによってBottomNavigationBarによる画面切り替えを実現する方法について検証を行なった内容についてま…
こんにちは。エキサイトでアプリエンジニアをしている岡島です。エキサイトホールディングス Advent Calendar 2024の17日目を担当させていただきます。 最近Dart 3.6がリリースされたので、Dart 3.6について見ていきたいと思います。また、DartのCHANGELOGで、Dart 3.7.0で追加される言語機能が紹介されていたので、まとめていきたいと思います。 Dart 3.6の新機能 Pub workspaces機能 pub.devのダウンロード数表示 Digit Separators Dart 3.7で追加予定の機能 ワイルドカード変数 (Wildcard Varia…
この記事は虎の穴ラボ Advent Calendar 2024の10日目の記事です。 こんにちは、虎の穴ラボFantiaエンジニアの吉岡です。 今回はDartに試験的に導入されているマクロの機能について触ってみようと思います。 注意点として、Dartのマクロはまだ開発中の機能でありDartのバージョンが3.4以上であることやFlutterはまだ未対応など制限が多くあります。 マクロ機能とは Dartのマクロ機能はコードの生成や拡張といったメタプログラミング手法を提供する機能になります。 マクロを利用することで、コンパイルしたタイミングで指定したクラスに任意のコードが生成、拡張されます。 これに…
はじめに こんにちは、エムティーアイ Advent Calendar 2024 12月10日分の執筆を担当させていただく新卒エンジニアの小林です。 今回は、FlutterのBottomNavigationBarの状態管理方法について3種類の方法を紹介します。 公式ドキュメントのBottomNavigationBarをベースに、それぞれの状態管理方法のサンプルコードを載せているため、BottomNavigationBarの状態管理方法のカタログ集のように使っていただけますと幸いです。 BottomNavigationBarとは何か BottomNavigationBarとは、アプリの画面下部に配…
こんにちは! 2024 年新卒入社、アプリ開発支援部の涌井と小林です。 先日、FlutterKaigi 2024 に参加してきましたので、その内容をレポートします。 ※この記事は、アドベントカレンダー12月4日分の記事です。 qiita.com 目次 FlutterKaigi の概要 参加した経緯 セッション ネットスーパーがスクリーンリーダーに対応した話 〜あるいはアクセシビリティ向上によるユーザー獲得〜 Effective Form ~ Flutter による複雑なフォーム開発の実践 ~ Flutter と難読化 Figma Dev Mode で変わる!Flutter の開発体験 Flut…
こんにちは、エキサイトでアプリエンジニアをしている岡島です。 今回はDartを用いて、定期的に関数を実行したい時にどうすればいいか、Timerを用いた実装を紹介していきます。 はじめに Timerの基本的な使い方 一度だけ実行する場合 一定間隔ごとに実行する場合 Timerを停止する まとめ はじめに 開発をしていると、定期的にAPIからデータを取得したい場合のように、特定の関数を一定間隔おきに実行したいケースがあります。そのような時に、DartのTimerクラスを活用することができます。 Timerの基本的な使い方 一度だけ実行する場合 Duration(seconds: 〇〇)というように…
こんにちは、エキサイトでアプリアンジニアをしている岡島です。 今回は、BuiltListを使う機会があったので、調べたことについて共有したいと思います。 BuiltListとBuilt Collectionについて Dartで注意が必要な参照渡し BuiltListで参照渡しの問題を防ぐ Built Collectionの特徴 変更不可(Immutable) 比較可能(Comparable) ハッシュ可能(Hashable) nullを拒否(Reject nulls) ジェネリクス型パラメータが必要 間違った型の要素を拒否(Reject wrong-type elements) 不要なコピーを…
こんにちは。エキサイトの岡島です。今回はカスケード記法(Cascade notation)についてご紹介していこうと思います。 業務中に誤ってカスケード記法を用いてmapの操作を行なっており、期待した動きにならなかったので自戒の念をこめてこの記事を書いています。ドット(.)1つの違いで思わぬ事態が起きてしまったので気をつけたいです。 カスケード記法(..)とは カスケード記法でmapの操作を行うときには注意 操作が反映されない具体例 なぜこの様なことが起こるのか まとめ カスケード記法(..)とは カスケード記法(..)を使用すると、同じオブジェクトに対して複数の操作を連続して行うことができま…