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
エキサイト株式会社の@mthiroshiです。 FlutterでRawAutocompleteを使って、テキストの入力に応じて検索候補のワードを表示する、検索フォームを実装してみました。検索候補ワードは、APIから取得します。 下記が公式ドキュメントです。公式ドキュメントには、UIに関するいくつかのサンプルコードが載っています。 api.flutter.dev 実装 ここではViewとViewModel、UiStateのサンプルコードを紹介します。 Android開発におけるUIレイヤーの設計に倣っています。 まずは、UiStateです。 モデル定義のため Freezed を使っています。 p…
概要 参考情報 概要 以下、自分用のメモです。忘れないうちにメモメモ。。。 Flutter 3.10 がリリースされましたね。また、Dart 3 もリリースされました。 以下、情報をメモしておきます。(後で読む) medium.com medium.com zenn.dev 大きな点として、今回のバージョンから iOS上ではレンダリングエンジンのImpellerがデフォルトになったという点ですね。 注意点として Android の方はまだ切り替わってはいないです。 Impeller rendering engine | Flutter Android development continues…
はじめに Google I/O 2023でDart3のリリースが報告されました。 Dart3でClass Modifierが追加されたので試してみました。 (Class Modifierとは、抽象Classの頭につけているabstractなどです) interfaceクラス // vehicle.dart interface class Vehicle { void drive() { print('drive'); } } このVehicleクラスが定義されたファイルとは別ファイルで使う場合に下記の特長があります。 インスタンス化できる 継承できない implementsできる // car…
サービス開発パートナー事業部 アプリエンジニアチーム 自称Flutterエンジニアの務台です。最近ジムに通い始めました。弊社はフルリモート勤務なので意識して運動していきたいところです。 Flutter開発において、画面遷移にはgo_routerを使うのが主流かと思います。 かくいう私もgo_routerをよく使っていたのですが、 パスパラメータに文字列型しか使えない extraで渡した値がObject?になってしまう のがかなり使いづらいなぁと感じていました。 そこで今更ではありますが、その辺りを解決してくれるgo_router_builderを使ってみました。 バージョン go_router…
サービス開発パートナー事業部 アプリエンジニアチーム 自称Flutterエンジニアの務台です。 弊社が加入している関東ITS健康保険組合では、毎年恒例のディズニーチケット割引券の申し込みがスタートしました。被保険者、被扶養者であれば3000円引きでチケットが買えるので、興味のある方は申し込みをお忘れなく! 私が今まで経験したプロジェクトでは全てLayerFirstなディレクトリ構成が採用されており、体感では同様のディレクトリ構成を使用している場合が多いのではないかと思います。 しかし、以下の記事で紹介したTodoアプリの作成にあたってはFeatureFirstなディレクトリ構成を使ってみました…
Flutter には SliverAppBar というものがあり、これを使うとヘッダーの AppBar をいい感じに表示することができる。 Twitter iOS アプリのプロフィールページなどのように、PullToRefresh するとヘッダー画像が blur していい感じに表示される、というのも SliverAppBar で簡単に実装できる。 なのだが、ちょっと複雑なことをしようとするとうまくいかず、自力で ScrollController の offset を取得してヘッダー背景がいい感じになるような Widget を作った。やってることは難しくなくてスクロールの offset をみて画…
最近2匹の猫との生活を始めました、アプリエンジニアチームの務台です。 今回は今年中旬に正式リリースと噂のDart3を使って、みんな大好きTodoアプリを作成してみたので、その感想等を共有できればと思います。 なお、2023/03/17時点ではまだアルファ版のため、今後機能の変更や削除の可能性があります。 作成したアプリのソースはこちらです。 github.com 実行環境 Flutter: 3.8.0-7.0.pre.2 (masterチャンネル) Dart: Dart 3.0.0 (build 3.0.0-204.0.dev) 開発時の注意 Dart3の機能はまだ正式リリースされていないため…
1月なので何か新しいことでもやってみようかと思い、Flutterでのアプリ開発に足を踏み入れてみることにした。ただしその前に、Flutter開発に必要なDart言語が全くの初見だったので基礎の学習から始めた。Dartの自己学習中に引っかかった部分やDart特有の機能などについて調べた際のメモが結構貯まったので、せっかくなので項目別に整理してまとめることにした。 環境 Dart SDK 2.18.6 使用した参考書 学習メモ Null Safetyについて StringBufferでの文字列の連結 データ型の確認と比較 whereType()とwhere() 複数条件でのMapリストのソート M…
エキサイトの武藤です。 Flutterで多言語対応をする際、基本的にはWidget内でBuildContextからAppLocalizationsを呼び出して利用します。 しかし、複雑なロジックが必要な表示テキストの場合、Viewでそのロジックを書いてしまうとViewのコードが肥大化してしまいます。 その場合、View以外に表示テキストの生成処理を行うようになると思います。 今回は、RiverpodのProviderで表示テキストの生成を行う方法について説明します。 実行環境 l10nを使ったテキストの表示 ロジックを含む表示テキスト l10nを取得するBuildContext を扱うユニット…
ワールドカップの見すぎでflutterを怠っておりましたのでワールドカップも見つつ頑張ります。前のパートでルーレットのアプリを簡単に作りました。 今回はいろいろ改良を加えてみようかなのパートとなります ルーレットの中身を自分で入力しよう 今までAさん~Hさんで分けてきましたが、これを自分で入力できるようにします とりあえず書いてみる main.dart import 'package:flutter/material.dart'; import 'package:myapp1/screens/roulette.dart'; import 'package:myapp1/screens/home…
Google I/O 2023が5月に開催されました。Google I/Oは開発者向けのカンファレンスとあって、様々な新技術について発表がありました。 今回はそんなGoogle I/O 2023から、モバイル系の発表をまとめて紹介します。
ローランと11の将,2万の兵が戦闘準備を始めた「ローランの歌(12)」の続きです。 LXVI (66) High are the peaks, the valleys shadowful, Swarthy the rocks, the narrows wonderful. Franks passed that day all very sorrowful, Fifteen leagues round the rumour of them grew. When they were come, and Terra Major knew, Saw Gascony their land and the…
現在(2023年6月)のPCスペック OS:Windows 11 home CPU:11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz RAM:1.6 GB SSD:237 GB VScodeのインストール Visual Studio CodeのHP https://code.visualstudio.com/Download より、VSCodeUserSetup-x64-1.78.2 をダウンロードしてインストール。 VScodeの拡張機能のインストール Japanese Language Pack C/C++ C/C++ Exte…
久々の複数での集まりで嬉しい限りです(^^♪ 夕練にY田君参上! 今回からDART BIKE 660SSで練習開始です。 前後リジットで直接プツシュなどを感じてもらう為に。 サスぺーション付き車両では分かりずらい自転車の挙動や全てのダイレクト感を味わっていただく為にあえての26"シングルMTBで練習です。 プッシュ=山を越えた後に自転車に圧力を加えて加速する方法。 前輪には腕を、後輪には脚を・・・と圧力を加えて、ペダルを漕がなくとも前に進む事を体で感じる事から始めます。 力の入れ方やタイミングの問題でなかなか上手くは行きませんが、反復練習しながら出来た時の事を忘れずに何度もチャレンジする事によ…
ChatGPTのプラグインが日々続々と追加されています。 2023年6月6日現在で268個のプラグインが公開されています。 現時点公開されている全プラグインを一覧にしました。ぱっと見使い勝手がよさそうなプラグインを17個選定しています。 今後プラグインを有効活用しながらビジネスや日常でChatGPTを利用するにあたって参考にしていただければと思います。 ※プラグイン名と概要はChatGPTにGoogleアクセスした際の自動翻訳された結果を記載しております。表現に違和感のある部分がありますが、ご了承ください。 おすすめプラグイン17選 ビジネスツール SEO 自動化 プロンプト生成 データ分析 …
概要 OOPでプログラミングしていく場合、宣言的にUIを構築できるのがメリットの一つかと思われます。 雑なユースケースですが、Userインスタンスが自分だった場合に処理や見た目を変えるなど。 Userインスタンスのid(それかインスタンス)を見て比較するわけですが、プリミティブな型でidを保持するのは少々危険かと思います。 dartはインスタンス同士を比較する By default, == returns true if two objects are the same instance. pub.dev dartではclassのoperatorというメンバをoverrideすることで、独自の…
エキサイトで内定者アルバイトをしている岡島です! 今回はFreezedパッケージを使っていて、階層(入れ子)構造のJSONデータを扱う時につまづいたので解決した対処法を共有します。 Freezedについて 階層(入れ子)構造になっている JSONの扱い方 まとめ 参考記事 Freezedについて https://pub.dev/packages/freezed Freezedを使うメリットとして、モデルの定義時にコードの実装量が減り、可読性が上がることが挙げられます。 ドキュメントには以下のような機能の実装が例に挙げられていました。 コンストラクタ+プロパティの定義 toString, ope…
スマレジの テックファーム(SES 部門) でWebエンジニアとして働いている やまて(@r_yamate) と申します。 実務では、2023 年 3 月末で SES の派遣先で、テーブルオーダーシステムの機能改修業務の設計などを担当していた業務を終えたところです。 4月からは、スマレジの関連アプリの開発業務を担当しています。触ったことのなかった Flutter での開発で、日々奮闘中です。 はじめに IT 関連の学習について、学習効率を高めることを目的として、月に 1 記事、振り返りのブログ記事を投稿していたのをしれっとストップしていたので、ここ 3 か月をまとめて振り返っておきます。 4 …
どうも、(@daiouoka)です。試験的に投稿します。毎月第四土曜日は面白かった動画やポッドキャストとかのまとめ記事です。 面白かったyoutube 面白かったニコニコ動画 TVer ポッドキャスト その他(画像とか) 面白かったyoutube
エンジニア・プログラマーの学習に約立つコンテンツのセール情報を集めました 1位 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル ¥27,800 → ¥1,600 94%OFF!! ⭐ ⭐ ⭐ ⭐ (20,561件) 現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です! 2位 【キカガク流】人工知能・機械学習 脱ブラックボックス講座 - 初級編 - ¥15,800 → ¥1,500 …
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; void main() => runApp(MyApp()); class MyApp extends StatefulWidget { const MyApp({super.key}); @override State<MyApp> createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { @override Widget build(Build…
FlutterのInAppWebviewにて非同期に処理するJavaScriptから返り値を取る。 あわせてよみたい ランキング FlutterのInAppWebviewにて非同期に処理するJavaScriptから返り値を取る。 最近は毎日家に帰るとちょっとだけプログラミングをして寝る生活を続けている。複雑な問題なんかに出くわすと頭を悩ましてしまうけど、それを見事解決できるとすごい脳汁が沸くよね。 プログラミングの楽しさってそういう複雑なパズルを解く楽しみと通づるところがあると思う。プロジェクトを進めていくといろんなissueが出てくるのだけど、それを1つ1つネットを調べたりしながら問題解決方…