サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
blog.flutteruniv.com
Many people wrote about FlutterNinjas. I will recap them so that you won’t miss them all. 様々な人が書いてくれたFlutterNinjasのSNSや記事のリンクをまとめていきます! I was super excited to meet Flutter developers from all over the world💙 A big thank you to the organizers of #FlutterNinjas See you next year!🗻🇯🇵 pic.twitter.com/aMXofCZedx — Daigo | Flutter (@mamushi_journey) June 14, 2024 🚀 What an incredible last two days
TextならThemeが使えるけれど、使えないWIdgetはどうすれば良いのかしら? Widgetの定義と装飾のコードは分けたいわ! 本記事ではこのような悩みにお答えします。 2022年5月に予定されているFlutterアップデートで実装予定の、 自作のWidgetに対してもThemeにてサイズや色を設定できるようにする、 ThemeExtensionについて解説します。 Flutterのコードの書き方の常識が次のアップデートで変わるかもしれません。 本記事で是非情報を先取りしてみてください! 課題点と解決方法 課題点 TextWidgetの例 あなたは、Flutterでこんなコードの書き方してはいませんか? Text( 'sample', style: TextStyle(fontSize: 24, color: Colors.green), ), このように、サイズや色などの装飾と、メ
本記事ではそんな疑問にお答えします。 FlutterでのWidgetの間の余白の付け方を解説します。 Containerのmargin,padding, Padding Widgetでの余白の付け方の違いから、 EdgeInsetsの種類まで詳細に解説します。 ぜひ読んでみてください! 余白の付け方 上の画像をご覧ください。 ピンクの大きな枠の中に水色の枠があり、その中に「text」という文字が表示されています。 ピンクの枠と水色の枠の間、水色の枠とTextの文字の間に余白が無い状態です。 これらに余白を付ける方法を3パターン紹介します。 Containerのmargin 1つ目の方法は、Containerのmargin(マージン)で余白を付ける方法です。 この方法では、以下の画像のようにmarginを設定したContainerの周りに余白が付きます。 水色のContainerに50のma
こちらの動画に沿って、本記事では解説を行っていきます。 Android Studio のダウンロード 動画の該当箇所はこちら。 こちらから、Android Studio をダウンロードします。 Download Android Studio と書かれたボタンを押すと、利用規約が出てきます。 利用規約を読んだ上で、文末にある同意のチェックボックスにチェックを入れ、 Mac with Apple chip と書かれたボタンをクリックします。 任意のフォルダを選択し、ダウンロードをしましょう。 Xcode のインストール 動画の該当箇所はこちら。 AppStoreから、Xcodeをインストールします。 インストールにかなりの時間がかかるため、インストール中に次の手順を行います。 Android Studio のセットアップ 動画の該当箇所はこちら。 Android Studio のダウンロードが
「 キーボードショートカット を実装したい!」 本記事ではそんな要望にお答えします。 Flutterでのキーボードショートカットの実装方法について解説します。 Control + C キーなど、キーボードの特定のキーを押下することで、 コピーなどの機能を実行する、そんなアプリケーションが作れるようになります。 以下のGIFは今回紹介するサンプルアプリの実行動画です。 control + R , contorol + B でそれぞれ文字色が変わる、そんなアプリとなっています。 基礎的な部分から丁寧に解説していきます。 ぜひ読んでみてください! 実装方法 実装方法は3段階に分かれます。 キーボードのキーの押下の検知 (Focusウィジェット) どのキーが押されたかの判定(Shortcutsウィジェット) 押されたキーに対応した処理の登録、実行(Actionsウィジェット) それぞれ解説していき
Flutter のレイアウトの仕方 レイアウトのルール Flutter のレイアウトは以下のルールに則って行われます。 Constraints go down. Sizes go up. Parent sets position. 日本語で解説すると、 制約は下ります。大きさは上ります。親が位置を決めます。 です。 より詳細に述べると以下になります。 ウィジェットは親(parent)から自身の制約(constraints)を取得します。 constraintは4つのdouble型の値(最小と最大の幅(width),最小と最大の高さ(height)) の集合です。 その後、ウィジェットはその制約を自身の子たち(children)に渡します。 ひとつひとつの子ウィジェットが、その子たちに自身の制約を伝えます。 (この制約はそれぞれの子で異なります。) そして、どれくらいの大きさになりたいか確認
Monarchとは何かについて解説します。 まず、Monarch にて解決したい課題について述べ、 Monarch がどのようにして解決するのかを解説します。 解決したい課題 Flutter でのアプリを作成して、いざレイアウトチェックを行おうとした時、 確認項目は多岐に渡ります。 例えば以下のような確認項目があります。 複数の種類、サイズの機種での確認テキストの大きさ変更でのレイアウト崩れの確認言語変更による影響の確認テーマ(ダークモード等)の確認 これらを組み合わせて確認するとなると、 何度もエミュレータの立ち上げを行ったり、 言語設定の変更を行ったりしなければなりません。 一言で言って、面倒です。 工数もかなりかかります。 このように、レイアウトチェックで多岐にわたる確認項目を確認するのに、 手間がかかること、工数がかかることが解決したい課題です。 Monarch による解決 Mon
テキストや画像にローディング効果を追加したい! 本記事ではそんな要望にお答えします。 テキストや画像、コンテナーにローディング効果を追加するパッケージ、 Shimmer パッケージを紹介します。 以下の画像のようなUIが、Shimmerパッケージを使うと、 以下のGIFのようになります。 このようなUIが簡単に実装可能です! ぜひ読んで使ってみてください! Shimmer の使い方 準備 まず準備として、パッケージのインストールと、 Dartファイルへのインポート文の追加を行います。 パッケージのインストール CLI(macならターミナル)で、自分のプロジェクトのルートにて 以下のコマンドを実行しパッケージをインストールします。 flutter pub add shimmer パッケージのインポート 実装したいDartファイルの上部に以下のインポート文を追加し、 パッケージをインポートしま
本記事ではそんな疑問にお答えします。 Flutter/ Dart でコードを書いていて出てくるfinalとconstの違いについて、 基礎の基礎から解説します! 曖昧だった理解も、きっとこの記事で固められるはずです! ぜひ読んでみてください! finalとconst の違い final とconst を使う時 finalもconstも変数の値を変えたくないときに使います。 例えば、こんな感じです。 void main() { final String nickname = 'Bobby'; final name = 'Bob'; // 型を省略して書くことができます。 name = 'Alice'; //再代入はできません(静的解析でエラーになります) }
本記事ではそんな疑問にお答えします。 FlutterでWidgetを自作する方法を紹介します。 基本的な方法とVS codeのコマンドを使った方法2種類を紹介します。 現役のFlutterエンジニアが当たり前に行っているテクニックとなります。 初心者必見の内容となりますので、ぜひ読んでみてください! Widget を自作することのメリット Widget を自作することのメリットについて解説していきます。 アプリ作成の中でどんな課題があって、 Widgetを自作することでどのように解決できるのか述べていきます。 課題 以下のようなUIを実装したコードがあります。 import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget {
メソッドの上書き Humanクラスを以下のように修正し、メソッドを追加しましょう。 class Human extends Monkey{ const Human({required super.name}); @override void cry(){ print('uwaaaaaaah'); } void sayTheName(){ print(name); } } Monkeyで定義していたcryメソッドをもう一度定義し直しています。 クラスの拡張では、元のクラス(Monkey)のメソッドをサブクラス(Humanクラス)にて、 上書きすることができます。 これをオーバーライドする、といいます。 以下のように、Monkeyクラスのcryメソッドと、 Humanクラスのcryメソッドの実行結果を比較してみましょう。 void main(){ print('Monkey'); // 実行結
A package for creating badges. Badges can be used for an additional marker for any widget, e.g. show a number of items in a shopping cart. パッケージのインポート badgesを利用するdartファイルにて、パッケージをインポートします。 以下のコードをdartファイルのimportの部分にに追加してください。 import 'package:badges/badges.dart'; badgesの追加 通知バッジをつけたいWidgetをBadge Widgetで囲みます。 Badge WidgetのbadgeContentプロパティに、バッジとして表示させたいWidgetを追加します。 以下の例は、メールアイコンに5というテキストを表示させた例です。
テスト、書いた方がいいのはわかるけれど、何のために書くのかわからない、 そんな方いらっしゃると思います。 テストを書く目的は『安心するため』です。 例えば、リリース済みのモバイルアプリのコードを修正した時を考えてみましょう。 修正した部分に関連するところだけ、実機で目視でチェックするだけで、本当に充分でしょうか? 修正した部分が想定外の部分に影響していないか、少し不安になりませんか? あらかじめテストを書いておいてテストでチェックするようにすれば、 想定外の変更に気が付くことができますし、 何より「テストで大丈夫だったから、大丈夫なはず」と安心できます。 コードを変更した際にアプリが想定通り動くか確かめ、安心するために、 今日からテストを書いてみませんか? Golden Test の紹介
本記事ではそんな疑問、要望にお答えします。 GitHub が提供する、AIによるコード作成補助ツールである GitHub Copilot について、 導入方法の解説とFlutter/Dartでの使用例について解説します! GitHub Copilot は有料コンテンツで、導入には賛否両論あるツールですが、 いざ使う、となったときにこの記事が役に立てばと思い記事化します。 ぜひ参考にしてみて下さい!
Mason とは、コード生成を自動化してくれるツールのことです。 Dartで作成されており、オープンソースのツールとなっています。 例えば、Flutterのコードを書く際に、 新しいファイルにStateless Widget 用意することがあるかと思います。 新規ファイル作成 →StatelessWidgetを作成 →名前の書き換え →material.dartのimport という作業を、ファイルを作る度に行う訳です。 これって面倒ですよね。 これをコマンド一発で自動で生成してくれるのがMason (Mason CLI) です。 Mason ではbricks と呼ばれるテンプレートを登録しておくことで、 自動的にコード生成することが可能となります! 自動化により、 コピペミス、打ち間違いによるエラーの減少作成時間の短縮 を見込む事ができます。 作業の効率化に役立つとても良いツール、それが
本記事ではそんな疑問、要望にお答えします! Flutter の状態管理手法であるRiverpod のコードを書くのを楽にする、 VS code の拡張機能である、Flutter Riverpod Snippets を紹介します! 以下のGIF のような形でコードを書くのを楽にしてくれます。 導入方法から、基本的な使い方まで解説していきます。 ぜひ読んで導入を検討してみて下さい! 導入方法 Visual Studio Code のExtensions の検索バーにて、 “Flutter Riverpod Snippets”を検索します。 検索して出てきたFlutter Riverpod Snippetsを選択します。 開いたページにて、installボタンを押せば、導入は完了です! 基本的な使い方 基本的な使い方は、下のGIFのように、コマンドを打ち込み、 表示された選択肢から自分が使いたい
準備 プロジェクトの作成とパッケージのインストール 任意の名前でFlutterプロジェクトを作成しましょう。 次にそのプロジェクトをお使いのIDE (統合開発環境、Android Studio や VS code)で 開いてください。 CLI(macならターミナル)で、作成したプロジェクトのルートにて 以下のコマンドを実行しflameパッケージをインストールします。 flutter pub add flame ファイルの準備 libフォルダにて、以下のフォルダ構成で空のファイルを作成します。 constants.dart の準備 今回のチュートリアルでは、 アプリ内で設定する数字や色等を、すべてconstants.dartにまとめてます。 以下のコードをコピーし、constants.dartのファイルに貼り付けてください。 import 'dart:math'; import 'packa
複数人でデータを共有するアプリを作りたいんだけれど、 サーバーの用意とか大変そう、、、良い方法ないかな? 本記事ではそんな疑問、要望にお答えします! 誰でも簡単に用意できるバックエンドサービス、Firebaseと、 Flutterを組み合わせた アプリの作成方法について解説します! 2021年末から2022年にかけて、 Flutter × Firebaseのセットアップ方法がとても簡単になっています! 本記事さえ読めば、セットアップの仕方から簡単なアプリの作り方まで、 一気通貫で知ることができます。 ぜひ読んでみてください!
今回はそんな疑問にお答えします! 本記事では、ドロップダウン(プルダウン)のボタンの表示に役立つWidget、 DropdownButton Widgetの紹介をします。 本記事を読むと、以下のようなUIが作成できます。 基本的な使い方から、詳細設定まで解説していきます! ぜひ読んでみてください! 基本的な使い方 DropdownButton Widgetの基本的な使い方を紹介します。 導入で紹介した画像のコードにて、解説していきます。 import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget bu
本記事はFlutter Advent Calendar 2022 1日目の記事です。 本日(2022年12月1日)から12月ということで、 2022年も残り少なくなってきましたね。 2022年3月より、このブログではFlutterに関する出来事や記事、動画等をまとめた記事を、 毎週作成してきました。 2022年の集大成、ということで、 本記事では、Flutter に関する2022年にあった出来事についてまとめて紹介します。 今年行われたFlutterのアップデート内容等についても紹介していきます。 2022年にFlutterは何が変わったのか、 どんな出来事があったのかがわかる記事となっています。 ぜひ読んでみてください!
コンソールに「明日の天気は晴れです」と表示したい処理と、 全く関係なくウェブページからデータを取得する処理を同時に行なっている例です。 ウェブページからデータを取得する処理は時間がかかります。 また、Flutter/Dartではプログラムは上から順番に実行されます。 普通は途中で順序が変わったりしません。 そのため、上の処理を行うと、「明日の天気は」の出力と、「晴れです」の出力の間に、 ウェブページからデータを取得している時間分、待ち時間が発生します。 これは、あまりユーザーフレンドリーではありませんよね。 理想としては、ウェブページからデータを取得している間に、 「晴れです」を表示させて、 「明日の天気は」と「晴れです」の待ち時間を無くしたいです。 ここで登場するのがFutureです。 Futureを返り値に保つ関数は、非同期処理となり、その関数が実行している間に、 他の処理を実行するこ
Flutter 3.3の変化点 Flutter 3.3 では5,687ものプルリクエストがマージされたとのことです。 Web , デスクトップ, テキストハンドリングのパフォーマンスでの向上と、 go_router パッケージ、Dev tool 、VS codeの拡張機能のアップデートを含みます。 SelectionArea ウィジェット Flutter 3.3 にて、SelectionArea ウィジェットが追加されました。 今まで、FlutterのWebアプリでのテキスト選択は思うような挙動をしていませんでした。 一回のマウスカーソルのスワイプで複数行選択できるようにするのは、簡単ではありませんでした。 SelectionAreaウィジェットにより、 このウィジェットの子は、全て自由にテキスト選択が可能となります。 例えば、Scaffoldのようなウィジェットツリーの根元の部分を Se
本記事では、そんな質問、要望にお答えします。 Flutterで内部データベースを簡単に扱えるようにするライブラリとして、 Driftを紹介します。 基本的な使用方法が理解できるように、 内部データベースからのデータの表示、追加、更新、削除のできる サンプルコードで解説します。 内部データベースの選定に悩んでいる人には有用かと思います。 ぜひ読んでみてください! Drift とは 「アプリを落としたらデータが消えてしまった!」 あなたはこのような経験はないでしょうか。 データの永続化を行っていないアプリを落とすと、 それまで記録されていたデータは削除されてしまいます。 Drift とは Dart/Flutterのアプリケーションでデータの永続化を行うためのライブラリです。 sqflite や sql.js のようなデータベースライブラリの上に構築されていて、 Streamでデータを受け取った
そんな疑問、悩みにお答えします! 本記事は、Flutter × Riverpodの基本的な使い方の解説記事となります。 サンプルアプリを基にRiverpodにおける状態の共有、参照、更新の方法を解説します。 記事後半では、Flutter大学で公開している、 Flutter × Riverpodのサンプルリポジトリを紹介します。 ぜひ読んでRiverpodの使い方を学んでみてください! Riverpod とは? 背景 Riverpodについて解説する前に、まず背景として解決したい問題を紹介します。 例えば、カウンターアプリのカウンターの値を管理するクラスがあったとして、 このインスタンスをアプリの色々なところで使いたい、 そんな時どうすれば良いでしょうか? 思いつく方法としては、 以下の図のように main.dartでインスタンス(Instance)を定義し、 Widget ツリーの下層にイ
Deep dive into our latest release, including macOS and Linux stable, performance improvements, and more! 細かいニュアンス等はこちらの記事で読んだほうが理解しやすいので、 気になる方はぜひこちらを読んでみてください。 以下、要約となります。 導入 Flutter のstable リリースの時が来ました。 Flutter 3について発表できることを非常に誇りに思います! たった3ヶ月前に、WindowsへのFlutterのサポートを発表したばかりでした。 本日、Windowsに追加して、macOSとLinuxに対するFlutter の Stable サポートを発表します! Flutter コントリビューターの懸命な働きに感謝します。 5248ものプルリクエストがマージされました。 このリリ
本記事ではそんな要望にお答えします! Google I/O とは、Googleが一年に一度開催する、 最新商品や最新情報のPRや、デベロッパーの交流を目的とした講演会です。 GoogleのプロダクトであるFlutterに関しても基調講演が開かれ、 Flutterの最新情報等がPRされました。 本記事では、2022年 Google I/O で行われた Flutterの基調講演の内容について、 まとめてお伝えします。 この記事を読むだけでFlutterの最新情報がまとめてわかります! ぜひ読んでみてください! 上記基調講演の内容をまとめてお伝えします! タイムスタンプ付きで記載するので、気になる部分は元動画をご確認ください。 Flutter 3 リリース 動画はこちら。 Flutter 3のリリースが発表され、本日リリースされました。 Mac OS と Linux へのStable リリースが
そんな悩みにお答えするのが本記事です。 本記事ではリストビューが下端に行った時に自動でデータを読み取り、表示する、 無限スクロールの実装方法について解説します。 本記事を読めば、以下のgifのような無限スクロールが実装可能となります。 無限スクロールの実装方法は色々とありますが、 今回はScrollControllerを使った方法を解説します。 ぜひ読んでみてください! 準備 まずは無限スクロールできないリストビューのサンプルコードを紹介します。 このコードを改造して無限スクロールができるようにします。 サンプルコードの後に、このコードの解説を行います。 サンプルコード import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWid
こんにちは。Flutter大学総長のkboyです。この週刊Flutter大学が始まってから約1ヶ月が経ちましたね。 Aoiさんの記事はとてもエネルギーがあって、情報量も多くて、僕自身がとても勉強になっています! 今回は初めてですが、私kboyの方から記事を書きます。福岡オフ会レポートです。 オフ会とは 2021年秋の東京オフ会の様子 Flutter大学では、オフ会を2020年10月に東京で1回、2021年9月10月には全国5都市で開催してきました。要は実際に集まっての飲み会です。 オンラインコミュニティでありながらオフ会が結構活発で楽しいのがこのコミュニティの良いところだなと感じています。 さて、昨年2021年は緊急事態宣言やマンボウをうまいこと回避し、9月10月に行ってきましたが、今回の福岡オフ会もマンボウの出ていない3月19日土曜に行うことができ、良かったです。 集まったメンバーのうち
古い記事だと、Scaffold.of(context).showSnackBar(〜) が紹介されているかもしれません。 こちらの方法は廃止予定で現在非推奨となっています。 また、Scaffold.~の方法だと、画面遷移後にSnackBarが引き継がれない、 というデメリットもあります。 以上から、今回紹介したScaffoldMessenger.~を使うことを強く勧めます。 サンプルとして導入で紹介したgifのコードを紹介します。 import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build
次のページ
このページを最初にブックマークしてみませんか?
『blog.flutteruniv.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く