エラー・バグ日記

Flutterで日々直面したエラー・バグ(できたら対応履歴も)を日記的につづっています。

ライトな日記思考なので、詳細説明はしておらず、基本、テキストのみで画像とかは載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。


スポンサーリンク

2021/9/20 Card内の配置でなぜか「A RenderFlex overflowed by 8.0 pixels on the bottom.」のエラーになる(解決)

Cardの中にColumnで縦にWidgetを並べようとした際、きちんとCardクラスをラップしたContainerにheightを設定し、それに収まるように計算して配置したのだが、なぜか「BOTTOM OVERFLOWED BY 8.0 PIXELS」が画面表示されてしまう。

Card内に設定されているPaddingもきちんと考慮し、何度も計算してColumn内の個々のWidgetのheightを設定したはずなのに、「なぜ8pixelもズレるの?」と詰まる。

ネットで調べても同様の報告は見つからず、試行錯誤の結果、

Cardクラスには、デフォルトで上下左右にMarginが4.0pixelつく

ということを理解。

各Widgetのサイズを規定するためにラップした各Containerに別々の色を付けて検証したところ、Cardの枠線の外側にも色がついたので気づいた。そこで、F4キーでCardクラスの中身を見てみると、確かにデフォルトで4.0のMarginが付くと記載があった。

Marginなので、Cardの枠線の内側ではなく、外側に余白がついてしまう。これは盲点。。

DevToolを使うのも良いですが、なかなか見方が難解なので、Containerに色を付けて検証するのは、手軽で良いかもしれません。

 

2021/9/18 Android エミュレーター内の「ファイル」アプリで、ファイルやフォルダの選択しかできない問題への対処

以前も発生して解決できなかったのだが、自分が頻繁に利用しているPixel4のAndroid エミュレーター(Emulator)において、標準搭載している「ファイル」アプリを開いた際、ファイルやフォルダの選択はできるが、ファイル自体を開いたり、フォルダの中に入ったりすることができない現象に見舞われた。。

はっきり再現できていないが、自作のアプリからFile Pickerなどを使ってエミュレーター内のファイル取得等をやっていると、いつの間にかその状況になっている気がする。。 

何とか解決したかったので、ネットで調べまくったが、英語や日本語で調べても情報が見つからず。。(同じ現象になる方はいないのだろうか、、、?)

結果、エミュレーター右側のバーにある電源ボタンを長押しして再起動してみたら治った!

相変わらず再起動は最強です!同じ現象に陥った方のご参考になれば幸いです。

 

2021/9/6 Device File Explorer内のアプリ専用フォルダの情報が更新されない問題への対処

アプリ専用フォルダ内にファイルを出力したとき、Device File Explorerを開いてフォルダ内を見ても反映されないので、いつもAndroid Studioを再起動しており、とても手間だった。。

でも、Device File Explorerの上部にあるエミュレーターのプルダウンリストで、該当のエミュレーター名を再選択すると、リフレッシュがかかり、アプリ専用フォルダ内の情報が更新されることに気づいた。

これでだいぶ楽になります!(知らなかったの自分だけかもしれませんが、、)。

 

2021/9/5 DevToolを起動したら「127.0.0.1 で接続が拒否されました。」のエラー

突然、DevToolを起動できなくなった。

Chromeで「127.0.0.1 で接続が拒否されました。」と表示されて接続できない。ファイアーウォールやプロキシ設定を見直すよう、コメントも出ている。。

調べると、こちらの記事などで、「flutter packages pub global activate devtools」をやってみると良いと知ったので、試してみるも、変わらず。。。

flutter cleanも効果なし。

結果、Android Studioを再起動したら無事アクセスできた。

色々調べると、過去にもDevToolが更新されるとこういった事が起こる模様。

やはり再起動は最強です。

 

2021/9/2 Google SignInでCalendar APIに接続できない(解決)

先日、Google SignInのscopeにGoogle CalendarのAPI(https://www.googleapis.com/auth/calendar)を指定したら、グルグルが回り続けてサインインできない問題について、Googleの事前承認が得るしか手がないと思っていたら、こちらの記事を発見。

Google Cloud Platformで公開ステータスを「テスト」にすれば、テストユーザーを追加できて、テストユーザーに対してはGoogleの承認なしでもGoogle CalendarのAPIにアクセスできることが分かった。

これでリリースするまでは色々気にせず実験できそう。Flutter縛りで検索してると、情報が限られてしまうけど、言語の縛りを無くして調べたら有益な記事にたどり着けた。役立つ記事をありがとうございました。

 

2021/9/1 Null check operator used on a null value

「Unhandled Exception: Null check operator used on a null value」のエラーに苦しむ。。

event.reminders!.overrides = xxxx; みたいな代入をしたら発生。

調べたらこちらの記事がとても詳しくて、勉強になった。初期化されていないインスタンスに「!」を付けると発生する模様。

とはいえ、「どうすればいいの?」と悩んだけど、下層から順番に

overridesO = コンストラクタ名(xxx: aaa, yyy: bbb); ※右辺は名前付き引数ありコンストラクタ

→remindersO = コンストラクタ名(overrides: overridesO, zzz: ccc);

とインスタンスを作っていき、最後に、

event.reminders = remindersO;

と代入したら無事行けた!確かにこの方法なら「!」を付ける必要がないですね。

「.」を使って一気に最下層のプロパティに代入するのはNGと理解。

きっと初歩的なことだと思うのですが、、、今更ながら勉強になりました。

 

2021/8/31 Google SignInでCalendar APIに接続できない

Google Calendar APIへの接続を紹介されている複数の記事(こちらこちら)を参考にさせていただき、サンプルコードを動かすも、Google SignInをしたところで、グルグルが回り続けてサインインできない。。(←後日、解消しました!)

Google Cloud Platformで、OAuth同意画面を設定しなくても、Google Driveには接続できたのに。

仕方なく、OAuth同意画面の設定をやってみると、スコープ設定でGoogle Calendarのほぼ全てのAPIが機密性が高いスコープ扱いになっていた。。最近変わったのだろうか。

Google Driveは「drive.appdata」や「drive.file」は鍵マークが無いので、非機密扱い。だからGoogle Driveは接続できたんだと理解。

どうやら古いAPIだと、Google CalendarもGoogle Driveと同様、アプリだけが作成するスケジュールの読み書きができるAPI(calendar.app.created)があったみたいで、それは非機密扱いの模様。

OAuth同意画面のスコープ設定では「calendar.app.created」を選べるが、実際にアクセスすると、「もう使えないよ」とメッセージが出る。自分のやりたいことにはちょうどよい仕様だったのに残念。。

となると、Googleから機密性が高いスコープである「calendar」の利用承認を得ないといけない。。どうするか要検討。。

タイトルとURLをコピーしました