見出し画像

Flutterの好きなところを語る

この記事をみて自分も書きたくなったので書きます。

この記事は有料に設定していますが、ほとんどの部分は無料でみれます。

有料になっている部分は自分の作ったアプリ「GroupAlbum」を今後どうしていくかの構想を書いておりますので、もしご興味のある方はご購入お願いします。

リリースしたアプリ

自分はFlutterで写真共有アプリを作成して、今運用しています。

最初にこのアプリのタグを打ったのが 2018/9/2なので、運用し始めてだいたい2ヶ月弱くらいです。

この前からもFlutterを触り続けていて、完全に惚れ込んでしまったのでどんなところが好きかを語りたいと思います。

Flutterを使っている方はぜひ共感していただきたいと思いますし、これから触ろうか迷っている方はこれを機に触っていただければ嬉しいです。

マテリアルデザインが簡単に書ける

Flutterを初めてまず最初に挫折することってレイアウトの組み方が独特なことだと思います。

自分もFlutterを知って触り始めた頃はレイアウトの組み方がわからなすぎて挫折していますw

例えばこんなの

@override
  Widget build(BuildContext context) {
    _checkServiceStatus();
    _setInitState();
    _getGroupIdList();
    return Scaffold(
      appBar: _appbar(),
      body: Container(
          margin: EdgeInsets.only(top: 10.0), child: _groupCardList()),
      floatingActionButton: _actionFloatingButton(),
    );
  }

このコードはGroupAlbumのトップページを作成しているコードです。

メソッドに切り出していて、その中でもレイアウトを作成していて少し複雑に見えるかもしれませんが、このレイアウトを組み方は慣れるとかなり速くなります。

実際にこのアプリを最初にリリースするまでの開発期間は3ヶ月でした。始めたころはFlutterの使い方がちゃんと理解できていませんでしたが、やってくうちに加速度的に開発スピードが上がってきました。

また、デザインがわからない自分でもマテリアルデザインのパーツを組み合わせてそれなりのレイアウトが組めたのもすごく良かった点です。

両OS同時リリースができた

両OS同時にリリースできました。

コードベースも70%は1つのソースコードで動かせてます。Flutterだけでは実装できないことについてはこの辺に書いています。

クロスプラットフォームはネイティブアプリエンジニアにとって嫌われがちだと思います。もちろん自分もそうでした。

ですが、実際やってみると使ってて気持ちいいですし、iOSだけ辛いとかAndroidだけ辛いとかいうことが全くありません。

もう一つよく言われることとしてiOSにマテリアルデザインいれるの?みたいなことはよく言われます。ですが、実際にはそんなことありません。

ここの書かれているWidgetを使用することでiOSっぽいデザインは作れます。コードベースでも Platform.isIos を呼ぶとどのプラットフォームで動かしているか取得できるので、プラットフォームごとに別のレイアウトを組むことも容易でしょう。

ちなみに自分のアプリではそのような分岐はしないことにしています。

・一人で運用しているので管理が大変になる
・マテリアルデザインが純粋に好き(実際にGmailアプリなどGoogleのアプリはみんななんの不満をいうことなく使ってる)

以上の理由からプラットフォームごとに分岐はしていません。一部プラットフォームごとに別で作っている箇所がありますが、それは別の制約が重なり仕方なく分岐している形になります。

Dartが好きになってきた

Dartは個人的に好きになってきました。もちろんKotlinやSwiftは素晴らしい言語だと思いますが、個人的にはFlutterをKotlinで書けるようにしてほしいとかは思わなくなってきました。

Flutterの中で一番好きな書き方はasync/awaitです。

Future<void> downLoadImage(String url, String filename) async {
    var request = await httpClient.getUrl(Uri.parse(url));
    var response = await request.close();
    var bytes = await consolidateHttpClientResponseBytes(response);
    String dir = (await getApplicationDocumentsDirectory()).path;
    File file = new File('$dir/$filename.png');
    await file.writeAsBytes(bytes);
    CreateGroupNative().saveImageUrl(file.path);
  }

これはGroupAlbumで画像のダウンロード処理のコードの一部です。

Kotlin Coroutinesみたいな書き方が簡単にできるので素晴らしいです。

Flutterのコミュニティが熱い

こういうイベントに登壇したりしているんですが、もう技術書店に出店したりしている方もいるぐらい今一番熱いコミュニティだと思いました。

自分もっと活動して盛り上げていきたいと思います。

これから

これからもどんどんFlutterを触っていきたいと思います。

Flutterについての最新の情報はTwitterにて発信しますのでぜひフォローしていただければと思います。

noteでも有料ですが、初心者向けにFlutterチュートリアルを販売しておりますのでご興味ある方はご購入お願いします。

有料部分

これから下の記事はGroupAlbumをこれからどうしていくのかを構想をかきます。こういう構想はいろんな方に拡散される必要はないのかなと思いますので有料とさせていただきます。

GroupAlbumを応援してくださる方は是非ご購入いただければと思います。


ここから先は

1,094字

¥ 300

投げ銭はいりません。それより無料でできる拡散をしてください!! 感想をツイートしていただけることが一番嬉しいです!!