Flutter Createコンテストに”Widget Quiz”というアプリを提出しました🚀🎯

Flutter Createコンテストのうんちくと、提出したアプリ(Widget Quiz)の紹介

mono 
Flutter 🇯🇵
7 min readMar 29, 2019

--

Flutter Createコンテストのうんちく

2月16日の朝、FlutterのWebサイトのコミットを読んでいたら、次のような怪しいPull Requestを発見しました👀

次のようなページがどこからもリンクが貼られてないものの、公開状態になっていました。

読んでいたら、サイトに誤植があったので直しました✅

Fix a mistake of #2390

公式アナウンス

1週間後の2月22日、いろいろな調整を経て、ようやく公式アナウンスがなされました。

ちなみに、このあたりのタイミングで、 flutter.io から flutter.dev へサービスドメイン差し替え作業が行われていました。

実は、Twitterアカウントも今日変わりました👏

うんちくが終わったので、以下もう少し濃いめの内容です。

Flutter Createとは

5KB以下のDartコードで何かアプリを作って提出し、入賞すると以下の豪華商品がもらえるコンテストです🎯

豪華商品。iMac Pro欲しすぎる。

詳しくは、公式サイトか以下の日本語での抜粋をご覧ください。締め切りは日本時間4月8日なので、まだ間に合います👌
(記事執筆の2019年3月29日時点)

楽しそうなお祭りで、賞品も魅力的で、何より入賞される喜びを味わいたく、それを目指して僕もアプリを作って提出しました。

作ったアプリ: Widget Quiz

けっこうガチでネタを考えた末に作ったのが、”Widget Quiz”というアプリです。

  • FlutterのWidgetの説明文を元に、4択で該当Widgetを選択
  • 結果に応じて、正解・不正解のアニメーションが表示(Flare製)
  • 結果画面ではドキュメントも確認可能
  • 10問回答を終えると、全体の結果が表示
  • 何回でもやり直すことができて、その度に153個のWidgetから10個のWidgetと他の選択肢がランダムに生成される

コンテストの選考とは関係ないと思いますが、アイコンも作りました。一応説明すると、FlutterのFのところを似たような形となるように左右反転させた ? に変えてクイズっぽい雰囲気を出しています( ´・?・`)

さらに、Android版はアダプティブアイコンに対応しました。

ソースも公開していて、リポジトリはこちらです。

ソース全文は以下です(パッケージ依存やassets参照が必要なのでこれ単体では実行できません)。可読性を損なうような短縮名もありっぽい感じだったので、それに甘えて色々書き足していたらけっこう見にくくなってしまいました。

Widgetのデータはどこから取得している?

FlutterサイトFlutter widget index というWidget一覧が載っているページからスクレイピングでもしようかなと思いつつソース(Jekyll製)を読んでいたら、そこのページはwidgets.jsonからデータを読んでいました。

なので、そのJSONをアプリにassetsとして組み込んでいます(初めはネットワーク経由でその都度取得しようかなと思いましたがAPI制限で不安定になったりコード量が少し嵩むためやめました)。

https://github.com/flutter/website/blob/master/src/_data/catalog/widgets.json

なぜ、上のようにwidgets.jsonに僕もコミットしているかというと、アプリ作成中に次の図の左のようにNestedScrollViewの説明文が欠損していることに気づいて、僕がその説明文を追加するプルリクを送ってマージされたからです( ´・‿・`)

左: プルリク前 | 右: プルリク後

インストールリンク

もちろん上のリポジトリから実行できますが、次のリンクからお手軽にインストールして試用も可能です。まだ正式リリースはしておらず、テスト配布です。

今後の展望

まず、コンテストの結果が楽しみです。しかし期待しすぎると、ダメだった時の落胆が大きいので落ち着いて待ちます🍵

これらの日に注目です:

フル版をリリースしたい

Flutterにおいて、用意された豊富なWidget群を把握するのはとても大事です。今回作ったWidget Quizを使えば、適当にポチポチしながらその学習を進められるので普通に実用的だと感じています。一方、今回5KB制限ゆえに妥協に妥協を重ねてしまったので、そういった制限なくベストなアプリに仕上げたいという気持ちがあります。他にもやりたいことがあって、いつ手をつけられるか分かりませんが、やる気はあります💪

--

--