よく寝てよく遊びよくサボる

趣味のAndroidアプリ開発の話や、その他諸々の情報について掲載していきます。自らの備忘の面が強いので情報の正確性は保証できませんが、誰かの役に立てば是幸い。(リンクはご自由に!)

flutterのfile_pickerが落ちる件(Android)

flutterでファイル読み込みをする必要が生じたので、読み込み対象のファイルを選択するためのfile_pickerを実装。

 

基本的には、公式記載のとおりインストールしていくだけ。

pub.dev

 

ただ、Readmeに書いてあるNoteの対応方法が分からず大苦戦。

>Note: If your are overriding onActivityResult in your MainActivity, make sure to call super.onActivityResult(...) for unhandled activities. Otherwise picking a file might fail silently.

 

onActivityResultなんて使ってないぞ・・・、しかも、慣れないkotlin変換にしてしまったので、MainActivityの見方すらよく分からない・・・。

そして案の定、ファイルを選択した瞬間に、ログも残さずにアプリが落ちてしまう。エラーハンドリングも書いてるのに対応しない。

まさにfail silentlyしている・・・。

 

色々試した結果、とりあえず下記の方法で動作するようになりました。

明らかに本来の対応方法ではないので、もう少し理解したら更新したいところ。

誰かに教えていただきたい・・・。

相談できる相手がいるのって大事ですね。。

 

MainActivity.ktの

class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}

上記のデフォルトの内容を・・・

class MainActivity: FlutterActivity() {
// override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
// GeneratedPluginRegistrant.registerWith(flutterEngine);
// }
}

削った!笑

これはひどい・・・。笑

でも、superを記載すれば良さそうなことを書いてあるけど、うまくいかなかったので、当面これでしのぎます。

 

 

flutterのアプリ上でURLリンク

flutterのテキストで、URLへのリンクを飛ばしたい。

または、メーラーを起動したい。

 

こんな時は、url_launcherを使えばOK。

pub.dev

 

メーラーを起動したい時は、URLを記載するところにメールアドレスを記載して、

「mailto:」を先頭に付ければOK

_launchMail() async {
const _url = 'mailto:メールアドレス@gmail.com'; //実際にはもちろん半角文字です
if (await canLaunch(_url)) {
await launch(_url);
} else {
throw 'Could not launch $_url';
}
}

 

 

flutterアプリのバージョン管理

flutterでアプリのバージョン管理をする方法がよく分かっていないものの、
多分下記の組み合わせでうまくいきそうなので、備忘でメモ。
(登録は、まだ試してすらいなけど)

 

バージョンの登録はここが参考になりそう。

backport.net

 

バージョンを呼び出す時はここが参考になりそう。

pub.dev

 

実装する際には、FutureBuilderとの組み合わせが必要でした。

@override
Widget build(BuildContext context) {
Future<PackageInfo> _packageInfo = PackageInfo.fromPlatform();

return new Scaffold(
  〜
body: FutureBuilder<PackageInfo>(
future: _packageInfo,
builder: (BuildContext context,
AsyncSnapshot<PackageInfo> snapshot) {
    〜中略(エラーとか取得中とか)〜
if (snapshot.hasData) {
return Text("バージョン: " + snapshot.data.version);
} else {
return Text("不明な事象");
}
  }),
以下略

Macの改行文字

今更ながら、初めてMacを使う中で、今までWindowsで当たり前に使っていた改行コード文字の¥nが入力できなくて困ったので、メモ。

 

キーボードの何を使えばいいのかわからなかったのですが、
option + ¥ で入力できると分かりました。

 

¥と\は別物として扱われるのですね。。

Textをタップした時のイベントを設定する(flutter)

flutterの公式ドキュメントが充実しているので、やりたいこととWighetの対応をひたすらメモしていく方針にしようかな。

 

○Textとか、様々なWighetに対してonTapを設定したい場合

⇨GestureDetectorを利用すればOK

・対象のWighetをGestureDetectorで囲んで、onTapを設定する

 

api.flutter.dev

fluttertoastが表示されない

Flutterでtoastのメッセージを表示したかったので、fluttertoastをインストール。

Webで調べた例では、msg:を記載すればうまくいきそうだったので、やってみたら何も表示されず・・・。

改めて公式のサンプルのとおりbackgroundColor:とtextColor:なんかを指定したらちゃんと表示されるようになりました。

でも公式の説明では何も設定しなければ、背景白色で文字が黒色が初期値っぽいんだけどなぁ・・・。

バージョンは、

fluttertoast: ^7.0.2

です。

 

ダメだった例:

Fluttertoast.showToast(
msg: "表示テスト");
},

 

うまくいった例:

Fluttertoast.showToast(
msg: "表示テスト",
toastLength: Toast.LENGTH_LONG,
gravity: ToastGravity.BOTTOM,
timeInSecForIosWeb: 1,
backgroundColor: Colors.white70,
textColor: Colors.black,
fontSize: 16.0);
},

 

こんなところでつまづいているから、なかなか進まない・・・