こんにちは。趣味グラマのNobu(@nm_aru)です。
毎週ちょっとずつだけ進めているFlutterアプリ開発。
今日は新しく使い始めてみたflutter_hooksネタです。
Flutter hooksはReact hooksのflutter版
Flutter hooksは、例によって@remi_rousseletさんによって開発されたパッケージです。
GitHub - rrousselGit/flutter_hooks: React hooks for Flutter. Hooks are a new kind of object that manages a Widget life-cycles. They are used to increase code sharing between widgets and as a complete replacement for StatefulWidget.
React hooks for Flutter. Hooks are a new kind of object that manages a Widget life-cycles. They are used to increase cod...
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9Rmx1dHRlciUyMEhvb2tzJUUzJTgxJUFFdXNlWFhYJUUzJTgxJUFFJUU0JUJEJUJGJUUzJTgxJTg0JUU2JTk2JUI5JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz0yMzk0MDdkNTU4ZmYwMGYzZjIxNjczYjEyZmY3MTk5Mw&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBta29zdWtlJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz01YzBiN2E2MGE5ZjEzYmFkYmZkOWI1NzhkZWQ1NTYzYg&blend-x=142&blend-y=486&blend-mode=normal&s=f2877b233b76e48cd0c569b7d8bd017a)
Flutter HooksのuseXXXの使い方 - Qiita
はじめにFlutter HooksとはReact HooksのFlutter版です。React Hooksについてはこちらの記事がわかりやすいです。5分でわかるReact Hooks現在、H…
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9SW5zaWRlJTIwRmx1dHRlciUyMEhvb2tzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz04MDBiYWQxZDhlZTcxN2FjYzBiMmUxNzgxMTY0ZGZlOA&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBTbG93aGFuZDAzMDkmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTRiOTliOGM4OTA3YjM3M2E2NGJkNmU1MjkxNTRlN2U1&blend-x=142&blend-y=436&blend-mode=normal&txt64=aW4g44GX44GP44G_6KO95L2c5omA5qCq5byP5Lya56S-&txt-width=770&txt-clip=end%2Cellipsis&txt-color=%23212121&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=156&txt-y=536&s=f28a99b219e4c0ea17da7f3007782480)
Inside Flutter Hooks - Qiita
概要Flutter Hooksを使う機会があり、すごい便利だなと思っていたのですが、内部的にどんな風に実装されているのか掘り下げてみようかと思い、今回色々調べてみました。(何か間違っていたりし…
@remi_rousseletさんは、riverpodやstate_notifierなど、Flutterでのアプリ開発に欠かせないパッケージを開発している超偉大な御方です。
TextFormFieldのフォーカス管理を行う
TextFormFieldを使っている時に、onFocus的な事をやりたくなる時があります。
そんな時は、TextFormFieldをStateful Widgetで囲って実装するやり方が普通(?)でした。
![](https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png?v=c78bd457575a)
How to detect when a TextField is selected in Flutter?
I have a Flutter TextField which gets covered by the soft keyboard when the field is selected. I need to scroll the fiel...
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9Rmx1dHRlciVFMyU4MSVBN1RleHRGaWVsZCVFMyU4MSVBQiVFMyU4MyU5NSVFMyU4MiVBOSVFMyU4MyVCQyVFMyU4MiVBQiVFMyU4MiVCOSVFMyU4MSU4QyVFNSVCRCU5MyVFMyU4MSU5RiVFMyU4MSVBMyVFMyU4MSVBNiVFMyU4MSU4NCVFMyU4MiU4QiVFMyU4MSU4QiVFMyU4MSVBOSVFMyU4MSU4NiVFMyU4MSU4QiVFNSU4OCVBNCVFNSVBRSU5QSVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9ZDRlMGQwN2JiNzYzN2JjODNkNmM1ZGIzNGJmOGQ2M2E&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBzdXBlcm1hbjkzODcmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTkzNmRiZGUyNmQ2YzA2M2E5YzI2ZWRmNWIzMzk4YzAw&blend-x=142&blend-y=436&blend-mode=normal&txt64=aW4g5qCq5byP5Lya56S-Wk9aTw&txt-width=770&txt-clip=end%2Cellipsis&txt-color=%23212121&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=156&txt-y=536&s=ae9d441290c05a4e3447b5ec365aac2e)
FlutterでTextFieldにフォーカスが当たっているかどうか判定する - Qiita
検索などを実装するときに、キーボードにフォーカスが当たった瞬間別の画面を出すみたいな実装をする場合はがあるかと思います。例えばこんな感じこのときの実装方法について説明します。FocusNode…
これらの記事を参考にStateful Widgetを作っている時に、ふと「あれ?hooks使っているのにStateful Widget使わないと駄目なんだっけ?」と思い、Flutter hooksのドキュメントを見てみると、見事に「useFocusNode()」「useTextEditingController()」というのが有りました。
GitHub - rrousselGit/flutter_hooks: React hooks for Flutter. Hooks are a new kind of object that manages a Widget life-cycles. They are used to increase code sharing between widgets and as a complete replacement for StatefulWidget.
React hooks for Flutter. Hooks are a new kind of object that manages a Widget life-cycles. They are used to increase cod...
TextFormFieldのフォーカス管理をuseFocusNode()で行う
具体的なコードは以下の通りです。
Stateful Widgetで実装するのに比べて、コードがめちゃくちゃすっきりしました。
まとめ
世界の偉人が便利なパッケージを作ってくれる事で、私のような趣味グラマでも楽に開発が行える事に大感謝です。
いま開発中のアプリについては、来年の春には完成すると良いなと思ってます。
コメント