第三回 今ならこうするシリーズ FlutterはTextにstyleをあてることができる。今回はそのTextStyleの共通化について書いていく。 const Text("文字", style: ...); TextStyleは以下のように共通化している。こうすることで基本はconstとして呼び出すことが出…
「今ならこうする」をシリーズ化しようと思ってカテゴリを作った。「今ならこうする」は僕基準であって全員そうすべきという話ではない。今回もそう。 Flutterにはprovider packageというのがあり、公式でもprovider + ChangeNotifierの構成がドキュメントに…
ChangeNotifierというのがFlutterにはあり、ViewModelで継承して使っている。 StateNotifierとよくパフォーマンス面で比較されるValueNotifierというのもあり、そっちは1個のValueしか扱えないがChangeNotifierは複数扱える。なのでValueNotifierやStateNoti…
native_webviewは、WebViewの機能をWebで提供するのは難しいのでWebには今の所対応していない。だが、対応していないプラットフォームでも自前で実装すれば一応動かせるようにはなっている。(というか0.28.0から動かせるようにした) // Webのときのみsetす…
ライブラリのテストは、ほとんどの場合 unit testでいいと思うのだけど native_webviewはiOSのWKWebViewやAndroid の WebViewに依存しているのでunit testではテストが出来ない。 なので、native_webview は integration test (ほとんど Widget testだけど)…
毎日のようにはてなスターのスパムがきます。こんにちは。 仕事で作っているアプリは、Flutterを使っておりかつFlavorがたくさんあってそれぞれのFlavorごとにrunConfigurationsを用意している。また今後Flavorは増える予定である。 同僚には、VSCodeを使っ…
久しぶりの外部の勉強会で、しかもFlutterの話をするのは初なのでなかなか緊張した。登壇者にはFlutterの人たちはもちろんReact Nativeの猛者がたくさんいて、僕はReact Nativeのことを全く知らないので話を聞くだけでも面白かった。TECH STAND #3 クロスプ…
コロナでリモートワークするようになってからまったくと言っていいほど家から出なくなった。 散歩するかな〜でも目的がないとやる気がな〜なんて言って全くしてなかったのだが、2020年もそろそろ終わるしグダグダ言ってやらないのダサいな〜と思ったのでいっ…
FlutterでWebViewをがんばる その2 - パルカワ2github.com前にWebViewの話を書いて、native_webviewというライブラリを自作した話を書いた。 すでにプロダクションで利用していて色々やったけど、最近だとBasic認証がかかっててもアクセスできるようにしたり…
こういうツイートをした。会社用のGoogleアカウントと家用のGoogleアカウントがあって、会社SlackからGCPのURLをクリックしたら家用のアカウントで開いてしまうみたいなのを1000万回はしてるんだけど、未だにどうすればいいのかわからない— ひさいち (@hisai…
api.flutter.dev native_webviewのテストのために example/lib/main.dart で enableFlutterDriverExtension() を有効にしていたのだけど、example アプリをビルドしてみるとキーボードが出なかった。普通にアプリに組み込むとキーボードは出るのでなんで?と…
github.com FlutterでWebViewをがんばる - パルカワ2 flutter_inappwebviewに関する知見 - パルカワ2 FlutterでWebViewを扱うために webview_flutter を使って、flutter_inappwebviewを使ってきたが、結局native_webviewというライブラリを自分で作り始めた…
おうち大好きマンなので、3年前くらいに今の家に引っ越してから作業環境を整えている。 自宅で働くことが増えて整えてきてよかったと思っているので、現状を書き出しておく。10年後とかに見たら面白いのではないか。2030年……41歳……… ぬいぐるみ hobby.dengek…
今まで会社に行く前にコンビニに寄ってコーヒーを買って出社するというのがルーチンになっていたのだけど、新型コロナウイルス感染症の影響で自宅で働くようになってからコンビニまでコーヒーを買いに行くのがめんどくさくなってしまった。なので、家でコー…
cirrus-ci.org 最近OSSでFlutterでWebViewを表示するプラグインを書いていて、AndroidエミュレータとiOSシミュレータを利用してそれぞれのプラットフォームでテスト(flutter drive)を動かしたいという欲求があった。 最初は、iOSの実装だけやっていたので使…
tmux 2.8からアップデートでもするか〜と思ってした。 どうせ動かなくなるだろと思って雑にupgradeしたら動かなくなった。ガッハッハ -fg みたいなのが廃止されて、-styleになったらしい /Users/hisaichi5518/.tmux.conf:11: invalid option: pane-active-bo…
プロジェクトを作ってシミュレーターを開いて、flutter driveすればよい --- format_version: '8' default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git project_type: flutter trigger_map: - push_branch: "*" workflow: primary …
ほしい機能がなかったからwebview_flutterをやめて、flutter_inappwebviewを使うようにした。 flutter_inappwebviewは機能がモリモリでモリモリすぎるという印象だけど、自分でモリモリ作るよりはいいだろという感じ。ちなみにflutter_inappwebviewはflutter…
Dartでlintといえば dartanalyzer だけど、custom lint rule に対応していない。 (dartanalyzerは中でdart-lang/linterを利用している) github.com なので、独自のlint ruleを動かす君を作る。 独自のコマンドゆえにIDE上のDart AnalyticsではLintエラーが表…
http packageを使っている。 pub.dev まあ、便利なんだけどtimeoutとcookieが対応していない。またUserAgentは常に指定する必要がある。 なので、それらに対応するには別packageを使うか自分で頑張る他ない。 諸々対応しているHTTP Clientとしてdioがあるが…
Package google.firestore.v1 | Google Cloud FirestoreのRPC APIを使っていて、Firestoreエミュレータを使って開発している。以下のようにListDocumentsRequestで、orderByとpageTokenがある場合に「gRPC Error (2, null)」というエラーが返ってくる。エラ…
この記事はつくりおきAdvent Calendar 2019の21日目の記事です。昨日は id:kazuhi_ra さんの 風邪おき(昼 / 夜) - #つくりおき でした。お大事に…。クリスマスだしニワトリをまるごと一羽焼こうって話をしていたんですが、ここならなんでもあるでしょと高を…
flutter/dialog.dart at master · flutter/flutter · GitHub Dialog の padding が固定 MediaQuery.of(context).viewInsets + const EdgeInsets.symmetric(horizontal: 40.0, vertical: 24.0) Material Designでは固定ではなさそう? https://material.io/co…
FlatButtonを使ってAlertDialogのアクションを表現したら、微妙にアクションの下スペースが広い。 debug printを表示するとわかりやすい。 AlertDialog( ..., actions: <Widget>[ FlatButton( child: const Text("OK"), onPressed: () => ok(context), ), ], ); Flat</widget>…
会社のPCでは出るけど、家のPCでは出ないのなんでって思ってたけど、設定してなかったみたい。 02:24 Frameworks Detected Android framework is detected. Configure Event Logにこういうのが出ているので、Configureを押したら設定できる。 このあたりも確…
get_it | Dart Package を使っていたがやめた。 // 登録さえすば GetIt.instance.registerSingleton<Logger>(Logger()); // どのクラスでもLoggerを参照できる class HogeBloc { final Logger logger = GetIt.instance.get<Logger>(); } 便利なんだけど次の問題があると思っ</logger></logger>…
Kotlinではdata classはこのように書ける。 data class User(val name: String, val age: Int) これは、 ただのクラスではなくて equals() / hashCode() / toString() / copy() が実装されるクラスになる。 なので次のコードはtrueが返る。 User(name: "hisa…
APIが4.0.0で変わるようで、builder を create/update に変えるだけで今の所良かった。直感的になって良い変更だなとおもう。 RFC Renaming the parameter ‘builder’ of providers · Issue #259 · rrousselGit/provider · GitHub ついでに4.0.0-devにするか…
Flutterの画面遷移について考えたのでメモ。 現状このようにして遷移している。 Navigator.of(context).push(MaterialPageRoute( builder: (_) => HogeScreen(keyword: "..."), )); このやり方だと settings.name が設定されていないので、FirebaseAnalytics…
妹が死んでキレた皇帝の話です。 顔の良い男たちが出ているからかお客さんのほとんどが女性だった…すごい… もっとめちゃくちゃな暴れん坊か?と思ってたけど、お笑い要素もあってちょっと意外だったんだけど、インタビューでも「みんなが思ってるカリギュラ…