Flutter 二三事

這兩天試驗 flutter 時,查找到的一些東西,大致上還蠻順利的。

安裝 flutter

照官方文件 (Linux install) 來進行安裝,大致沒什麼問題。

我碰到的問題是,執行 flutter doctor 以後有 Android license status unknown. 的問題。可是 Android SDK 也裝了,應該是要可以才對。

後來自行去執行 Android SDK 裡的 sdkmanager 以後,才知道是因為無法執行 sdkmanager 而導致 flutter doctor 檢查失敗。我檢查了一下 java 的版本,目前使用的是 java 11,而 Android 還不支援 java 11,所以改安裝 openjdk-8-jdk 以後,再執行 flutter doctor –android-licenses 就可以了。

RenderFlex overflowed

這個是因為 Layout 固定 (StackOverflow),鍵盤出現,會蓋住輸入框,flutter 很貼心的出現這個 warning ,提醒要改用可以 Scroll 的 View我是改用 SingleChildScrollView:https://api.flutter.dev/flutter/widgets/SingleChildScrollView-class.html

退出 app

有查到這個退出 app ,說可以用 exit(0),也可以用

import 'package:flutter/services.dart';
// ...
SystemChannels.platform.invokeMethod('SystemNavigator.pop');

但有人說 SystemNavigator.pop 只適用於 Android。

講 Layout 的

其他

Django jsonfield

Django 有提供 jsonfield,但只能用在 postgresql 上,有另外一個專案 django-mysql 提供了可以用在 MySQL 上的 jsonfield。是的,就目前來說,並沒有一個通用的 jsonfield。惟一能找到的,就這個 django-jsonfielddjango-jsonfield 的網站上也有特別提到這件事情,並且說 django-jsonfield 只繼續維護,不再開發,因此不建議使用這個專案。但是就跨資料庫來說,目前好像也就這個專案可用。

我有想過要依照 DATABASE 設定來區分要使用哪個 jsonfield,但仔細想想,這最大的問題可能會出在 Migration,因為 Migration 裡會直接引用 jsonfield 。migration 裡沒辦法讀取到 django settings ,也就沒辦法做到動態的處理。不過,可能還是要試試看才知道行不行。