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
以前に考えていたときに試したコードなどが発掘されたので記事にすることにしました。 まず Freezed について pub.dev 用途 Freezed は Dart のクラスの自作しにくい機能を自動生成によって楽に実現できるパッケージで、様々な機能があります。 同一性(Equality)の判定が可能(Equatability) 不変性(Immutability) copyWith() toString() Json とクラスオブジェクトの間の変換 Union/Sealed クラス 以前は Dart 2.12 の一部機能(non-null, late)の先取りでもありましたが、今はこれくらいでし…
わんぱく Flutter! 第四回 いきなりっ! 画像認識をしてみよう。 これまでで、基本的な Flutter の使い方をやってきました。あとは、たくさん用意されている Widgets を使いこなすだけですが、Flutter の魅力の一つに、パッケージがあります。Flutter も Python と同じようにパッケージを読み込むことで、簡単に機能拡張を行うことができます。今回は、Google が買収した Firebase に用意されている機械学習(Machine Learning)機能のひとつ、画像認識をしてみようと思います。 1. Firebase を使えるようにする Flutter から …
dartcode.org binフォルダを作ってそこにdartファイルを入れて実行すればいいだけ
dartのコードを見ていると下記のように引数にアンダースコアが置かれている場面にちょくちょく出くわす。 ... testFunc(_) { ... } ... なにこれ?と思いつつも特に困らなかったので、というか自分で使う場面に出くわさなかったので詳しく調べなかったのだが、ブログのネタとして調べることにしました。 結論からすると、「明示的に、パラメータを使わないことを表している」ということらしい。 dart.dev なるほど、たしかにthenメソッドとか使うときに値を受け取っても使わないことってありますよね。 明示的に、このパラメータは使わないよ、って表現したほうがわかりやすい :)
カルーセルスライダーにインデックスインジケータ(?)を実装したい。 開発中のカルーセルスライダーをいじる機会があったので記録に残します。 下記のパッケージはすごく充実していて、お手軽にカルーセルを実装できます。 pub.dev 上記のデモの実装は下記になります。インジケータ部分において、現在表示されていもののインデックスが黒丸で表現されています。 class _CarouselWithIndicatorState extends State<CarouselWithIndicatorDemo> { int _current = 0; @override Widget build(BuildCo…
わんぱく Flutter! 第三回 ページを追加してみよう! 前回は、動作確認用のアプリケーションに、色々な Widget を追加してみました。その他の基本的な動作と言えば、「ページ移動」ではないでしょうか。今回は、ページ移動を行ってみます。 Flutter のページ移動は、前回作成した動作確認用のアプリケーションと同様、新しい xxxx.dart ファイルに、ページを作成する class を記述して、呼び出し元 class から、Navigator.push() API を呼ぶだけです。それでは早速、やって行きましょう。 1. Navigator.push によるページ移動 まず、新しい x…
概要 参考情報 概要 昨日、Gitpodで flutter/dart の勉強環境作るって記事アップしましたが DartPadさんも勉強にはとっても便利ですね。 dartpad.dev dart.dev こんな感じ 名前は DartPad ですが、Flutterアプリも作れるのでめっちゃいい感じ。 ライブヘルプが表示されるのが、言語学習中の身にはとても助かります。 参考情報 developers.googleblog.com medium.com medium.com 過去の記事については、以下のページからご参照下さい。 いろいろ備忘録日記まとめ devlights.github.io サンプル…
概要 Gitpodの設定 .gitpod.Dockerfile .gitpod.yml Flutter と Dart が使えるか確認 サンプルアプリをとりあえず作ってみる とりあえず起動 参考情報 概要 ついに、Flutter 2 がリリースされましたね。 flutter.dev medium.com flutter.dev モバイルもWebもデスクトップもサポートするようになったので、俄然興味がわきました。勉強したい。 ということで、GitpodでFlutterとDart勉強できる環境つくってみようと思ったのでやってみました。 Gitpodの設定 ネットで情報を探すと、結構 .gitpod.…
やりたいこと Dart言語でSwiftのResult型のようなunion型を定義したい。Swiftの場合は以下のように定義ができる。 (ビルトインタイプがあるので実際には不要だけど) // 定義 enum Result<T, E: Error> { case success(T) case failure(E) } // 利用 func do(result: Result<String, SomeError>) { switch result { case let .success(value): debugPrint(value) case let .failure(error): debu…
if (database == null) { database = openDatabase( join(await getDatabasesPath(), 'track_data.db'), ); }というコードを書いたらPrefer using '??=' over testing for nullと注意されました。 '??='とはDartのNull-aware Operatorsというものだそうです。 以下、Null-aware Operatorsを紹介します。?? exp ?? otherExpとすると、これはexpがnullでない場合expを、expがnullである場合otherE…
こんにちは、rinoguchi です。過去二回は、Dataprocの話 や 名寄せの話 などを書いたりしてました。 今回は趣向を変えて、子供のお勉強時間を管理するために iOS/Androidで動くネイティブアプリを Flutter で作ったので、その話をしようと思います。 Flutter の特徴 作ったもの 基礎的な構成を確認する アラームを鳴らす方法 通知を行う方法 懺悔 感想 さいごに 最終的に作ったアプリは、以下のようなものです。 Flutter の特徴 まずは、Flutter を知らない人のために、Flutter の特徴を紹介しておきます。 【○】一つのコードベースで、クロスプラット…
はじめに こんにちは、とりかつ(@torikatsu923)です。 私はStateNotifier+Riverpod+Freezedを使用してMVVMライクにFlutterアプリを開発しています。 4月の頭にriverpodが0.13.1+1から0.14.0にアップデートされたのですが、このアップデートでは破壊的変更が入っていました。 この破壊的変更に気づかず、いつものようにRiverpodのproviderからStateNotifierを取得しようとしたところ、うまく取得できずに沼にハマりました。 この記事を執筆したのは4/19日ですが、どうやら公式docはこの破壊的変更に対応していないよう…
やりたいこと Flutterアプリで使うAPIキーをソースファイルに書かずに使用したい。 やり方 .envファイルを作成する .envを.gitignoreに追記する flutter_dotenvをインストールする main()で.envファイルを読み込む 必要な箇所で環境変数を読む .envファイルを作成する プロジェクトのルートディレクトリに作成します。 .env HOGEHOGE=hogehoge .envを.gitignoreに追記する .gitignore .env flutter_dotenvをインストールする 下記を記載してUpgradeを実行。 pubspec.yaml dep…
(Common)「グォっ!」 PC設定 キャライメージhttps://www.youtube.com/watch?v=Nga3z7RqEhIhttps://www.youtube.com/watch?v=5qnXa_V2FBMhttps://www.nicovideo.jp/watch/sm25489890(中のぬこは、ターニャさん風味ですw)付録 威嚇 喉鳴りhttps://togetter.com/li/1137174 1475DR10月21日の夜、長死門Way of the Long Death Monkhttp://eternalsessionbreake.blog.fc2.com/b…
2021-04-05 自身のスキルを説明する ポートフォリオ制作 自身のスキルを他者に説明する事は、そのスキルを身に付けるのと同じくらい重要であり、意味のある事です。「htmlとcssが出来ます」だけでは無く、この6ヶ月で具体的にどういう事を学んだか、どういう事が出来るようになったか、をしっかりと説明しましょう。 html5 htmlの授業ではhtml5を中心に学習しました。HTMLはマークアップ言語であり文書構造(アウトライン)を示す物です。html5ではheader要素やnav要素といった新しい要素を使用する事で、より明確に文書構造を示すことができるようになりました。また、h1~h6を使用…
2021-04-05 SassのGUIコンパイラ「 Prepros」 sass 実はSassは実装している言語によって3つに分かれます Ruby Sass … Ruby製。2019年に非推奨。 LibSass … C++製。今一番広く使われている様子。 Dart Sass … Dart製。公式推奨。 なので今後は公式が推奨しているDart Sassを積極的に使用したいのですが、「Live Sass Compiler」はDart Sass をサポートしていない為、他のコンパイラが必要です。今回はGUIコンパイラ「 Prepros」を使ってみましょう。 Prepros prepros.io www…
弊社では昨年9月にふりかえることで思考の”質”を高めるアプリ「Stockr」をリリースしました。 そこで、Flutterを用いた開発エピソードをご紹介します。 自己紹介 こんにちは、エンジニアの河村です。大学4年次からアルバイトで参画し、Stockr開発をメインで担当しています。この4月から正式入社となりました! 最近、VR(Oculus Quest2)を購入しまして、運動不足解消に励んでいます💦 Fllutterを採用した経緯 Flutter では、クロスプラットフォーム技術によりAndroidとiOSを同時に開発することが出来ます。また、ソースコードを保存すると、リアルタイムでアプリに反映…
画面下部に表示するナビゲーションバーとメインのコンテンツに当たるWidgetでソースを分けたい場合の実装方法となります。 ナビゲーションバーに対してアイコンをタップするなどの操作した結果を親となるWidgetが受け取る仕組みになっています。 ◇親となるメインウィジェット ◇参照するナビゲーションバーウィジェットアイコンのタップを検知して親ウィジェットのイベントを走らせます。イベントの引数にインデックスを渡すことで、どのアイコンがタップされたかを識別できるようにします。bottom_navi_bar.dart ◇完成形イメージこんな感じになります。 この記事がお役に立てていたらうれしいです。
fold import 'dart:math' as math; void main() { var random = math.Random(); var hoge = [ List.generate(10, (int i) => random.nextInt(100) + 1), List.generate(10, (int i) => random.nextInt(100) + 1), List.generate(10, (int i) => random.nextInt(100) + 1), List.generate(10, (int i) => random.nextInt(100…
2030年:すべてが「加速」する世界に備えよ (NewsPicksパブリッシング) 作者:ピーター・ディアマンディス,スティーブン・コトラー 発売日: 2020/12/22 メディア: Kindle版 書名:2030年すべてが「加速」する時代に備えよ 著者:ピーター・ディアマンディス&スティーブ・コトラー ●本書を読んだきっかけ まるで「本書を買ってくれ!」 と言わんばかりに書店に並べてあった 本の装飾も気になったので購入 ●読者の想定 投資やビジネスにおいて現時点の テクノロジーと今後の未来について テクノロジーでどう変わるか? の情報が得たい人 ●本書の説明 はじめに とんでもない時代へよ…
https://github.com/miguelpruivo/flutter_file_picker/blob/74289af412c2e090bde914c45cbbc54479d075a2/lib/src/file_picker_web.dart#L28-L38 FileUploadInputElementをそのまま使う時は、 そんなことしなくてもアップロードは成功する。 何のために必要なのだろうか? blameするとこんなコミットを発見 https://github.com/miguelpruivo/flutter_file_picker/commit/ba19a7eccfac06e3…
どうでもいいでしょうけど、プロフィール。 あんた誰だよって思った君、ワイからしてもあんた誰だよって感じです。 普段何しているかって、朝起きて💩して、適当にしてます。 プログラミングしたり、ニュースを見たり、本見たり以上。 プログラミング 基本的に何も作りません。作りますが。 C/C#/Go/Python/Dart当たりを書きます。かけます。 業務効率化・自動化ツールを考えたりするのが好きです。 とかね。 趣味 コンピュータと本を読むことかな。とか色々。 趣味って答えるの難しです。。。 趣味なのか、夢なのか、仕事なのか何なのか。 好きなこと以外は興味ないのです。または嫌いか。 好きなことしか、し…
×275 14年間気づかれなかった暗号の脆弱性を発見、焦りと戦ったNECの若手研究者 | 日経クロステック(xTECH) ×104 Amazonのデータセンターを爆破して「インターネットの70%の破壊」を企てた男が逮捕される - GIGAZINE ×79 Clubhouseからスクレイピングされたユーザーデータ130万件も無料公開 - ITmedia NEWS ×76 NHS Covid-19 app update blocked for breaking Apple and Google's rules - BBC News ×60 セキュリティー - AES-256 GCMに渡すkeyに、…