tag:blogger.com,1999:blog-59239720191408515672024-02-19T01:10:17.628-06:00The blog of Abraham WilliamsAbraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.comBlogger157125tag:blogger.com,1999:blog-5923972019140851567.post-41575074335519620222018-12-31T14:27:00.002-06:002018-12-31T14:27:33.258-06:00A month of Flutter: a look back<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsAascsjXkBPHuTbUryMxH-a2qgXRoaTQmKsIAjhkD_a28vr4AzwgLvq3k4NSkS-86LKCNzQCD2UGyAErT1DogQlebYURCqaxwPPsJElYH0-6nJEdEfCckmaMXwJ_lZEJC35QHMX5bjLU/s1600/2018-12-31-a-month-of-flutter-a-look-back.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsAascsjXkBPHuTbUryMxH-a2qgXRoaTQmKsIAjhkD_a28vr4AzwgLvq3k4NSkS-86LKCNzQCD2UGyAErT1DogQlebYURCqaxwPPsJElYH0-6nJEdEfCckmaMXwJ_lZEJC35QHMX5bjLU/s1600/2018-12-31-a-month-of-flutter-a-look-back.jpg" /></a></div>
<i><br /></i>
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-a-look-back">bendyworks.com</a>.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This is it. 31 blog posts in 31 days. Writing <a href="https://bendyworks.com/blog/a-month-of-flutter" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">a month of flutter</a> has been a ton of work but also lots of fun and a good learning experience. I really appreciate how supportive and and positive everyone as been.</div>
<h2 id="publishing-experience" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Publishing experience</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
For the series I've been posting on <a href="https://bendyworks.com/blog/authors/abraham_williams" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">bendyworks.com</a>, <a href="https://dev.to/abraham" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">DEV</a>, <a href="https://blog.abrah.am/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">my personal blog</a>, and <a href="https://medium.com/@abraham" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Medium</a>. After publishing to these sites, I would put the Bendyworks link on <a href="https://twitter.com/abraham" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Twitter</a>, <a href="https://www.reddit.com/user/abrahamwilliams/posts/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Reddit</a>, and the <a href="https://flutter.io/community" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Flutter Study Group Slack</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Posting to DEV was easy as they use Markdown just like the Bendworks blog. DEV also has built in support for a <a href="https://dev.to/ben/changelog-create-series-of-posts-4o63" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">series of posts</a> so it's easy to read the entire series. I did have to manually upload any embedded images. DEV also has a number of <a href="https://dev.to/p/editor_guide" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">liquid tags</a> for embedding things like GitHub issues that I didn't make as much use of as I should have.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Blogger is rich text so it was easy to copy/paste the rendered posts. This would hotlink all the images though so I had to remove them and manually re-upload them.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Medium will only support canonical links if you <a href="https://help.medium.com/hc/en-us/articles/214550207-Import-post" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">import from a URL</a> for some reason. They would grab any images and host them on their CDN so no manual uploading. Importing would lose all the code snippet formatting though so I would have to fix all of that.</div>
<h2 id="engagement" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Engagement</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Bendyworks received the most page views which is not surprising since those were the URLs shared on Twitter/Reddit/Slack. DEV was second with with Medium and my blog getting negligible views.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWLa4Sq_2FXuL4c4qt4M8vQo9oKXOmRz3z5u7L5MEBOC-ZgFIzxhUNXDOfqXTNZiNxgkqfX-n25VKBH5L07xd0sLn1U4q6wheTtmWYeHzPBaWD2avsxEw7_K7hnFYEPBOaWA8V4xhXK5k/s1600/2018-12-31-a-month-of-flutter-a-look-back-views.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="371" data-original-width="600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWLa4Sq_2FXuL4c4qt4M8vQo9oKXOmRz3z5u7L5MEBOC-ZgFIzxhUNXDOfqXTNZiNxgkqfX-n25VKBH5L07xd0sLn1U4q6wheTtmWYeHzPBaWD2avsxEw7_K7hnFYEPBOaWA8V4xhXK5k/s1600/2018-12-31-a-month-of-flutter-a-look-back-views.png" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
For engagement DEV was the leader with lots of ❤️ and Twitter close behind. Reddit had some upvotes but not that many and only a few claps came from Medium.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCAdtOOS-YNVpm9KvsBA1bP_KzqsZGdL0qIgshgoqKx1fvpEEbCSjab3TG8ZeFaAymrwNryYnDfdIZ5Jx_c4QjqeM-jwsProsiGeQHTwBqUDTlZsYsNvDbsXwqaxaJu6FXjimQz6TL1e8/s1600/2018-12-31-a-month-of-flutter-a-look-back-engagement.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="371" data-original-width="600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCAdtOOS-YNVpm9KvsBA1bP_KzqsZGdL0qIgshgoqKx1fvpEEbCSjab3TG8ZeFaAymrwNryYnDfdIZ5Jx_c4QjqeM-jwsProsiGeQHTwBqUDTlZsYsNvDbsXwqaxaJu6FXjimQz6TL1e8/s1600/2018-12-31-a-month-of-flutter-a-look-back-engagement.png" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The real breakout for me here was DEV. I had never posted anything or used it much but I found the community very friendly and engaging. I received a lot more activity from the 600+ followers up built up there than the almost 9000 followers I have on Twitter. If you're not on DEV yet, sign up and <a href="https://dev.to/abraham" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">follow me</a>.</div>
<h2 id="goals" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Goals</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Kicking off I had three main goals</div>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">Become a better Flutter developer</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">Practice writing concise blog posts</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">Practice writing project requirements</li>
</ul>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I certainly become a <a href="https://bendyworks.com/blog/a-month-of-flutter-user-registration-refactor" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">better Flutter developer</a> and learned a lot along the way. I would like to try more architecture patterns but the need to always be publishing didn't leave me with much room for exploration. Maybe I could have written more "I tried this and here why it didn't work" posts but I felt pressure to always deliver progress.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I am much better at throwing words onto a page and coming out with a decent post. One aspect of blogging that I constantly struggle with is keeping posts small and digestible. It's easy to get into the mindset that posts have to be long and perfect. Short and to the point is usually better though.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Working on improving project requirements kind of fell by the wayside as I tried to keep up with posting every day. It just wasn't a priority.</div>
<h2 id="app" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
App</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The app isn't done yet but it has <a href="https://bendyworks.com/blog/a-month-of-flutter-sign-in-with-google" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Sign in with Google</a>, a <a href="https://bendyworks.com/blog/a-month-of-flutter-rendering-network-images" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">home stream</a>, and <a href="https://bendyworks.com/blog/a-month-of-flutter-hero-animation" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">fancy animations</a>.</div>
<div class="js-reframe" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 261.984px 0px 0px; position: relative; vertical-align: baseline; width: 465.75px;">
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/2u-_GOWhWNc" style="background: transparent; border-style: initial; border-width: 0px; box-sizing: border-box; height: 261.984px; left: 0px; margin: 0px; padding: 0px; position: absolute; top: 0px; vertical-align: baseline; width: 465.75px;" width="560"></iframe></div>
<h2 id="annotatedregion" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
AnnotatedRegion</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<a href="https://github.com/Miguel-Herrero" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Miguel</a> submitted a <a href="https://github.com/abraham/birb/pull/69" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">pull request</a> fixing <a href="https://github.com/abraham/birb/issues/51" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">a bug on Android</a>where the bottom navigation theme would break on sign in. He fixed it by wrapping the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code> <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Scaffold</code> in an <a href="https://docs.flutter.io/flutter/widgets/AnnotatedRegion-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">AnnotatedRegion</code> widget</a>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AnnotatedRegion</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SystemUiOverlayStyle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">lightSystemUiOverlayStyle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Scaffold</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="cm" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/* ... */</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<h2 id="thanks" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Thanks</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
A huge thank you goes to <a href="https://twitter.com/pblatteier" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Pearl</a> for proofreading every single post and reviewing all the code, sometimes late at night at the last minute. I couldn't have done a month of Flutter without her help.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Thanks also to: <a href="https://unsplash.com/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Unsplash</a> for all the featured images. <a href="https://twitter.com/ninalimpi" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">@NinaLimpi</a> and <a href="https://undraw.co/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">unDraw</a> for the <a href="https://bendyworks.com/blog/a-month-of-flutter-no-content-widget" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">fantastic illustrations</a>. <a href="https://twitter.com/tommy_emo_" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">@tommy_emo_</a> for the <a href="https://bendyworks.com/blog/a-month-of-flutter-awesome-adaptive-icons" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">awesome icon</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
All of you for reading along and your feedback and support.</div>
<h2 id="whats-next" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
What's next</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I'm going to keep developing Birb and writing about it as "a month+ of Flutter". Just don't expect posts every day. For example I'd like to finally get a <a href="https://github.com/abraham/birb/pull/45" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">readme written</a> and take a second look at something I <a href="https://github.com/abraham/birb/pull/63" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">didn't get running</a> before.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Follow me on <a href="https://twittr.com/abraham" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Twitter</a> and <a href="https://dev.to/abraham" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">DEV</a> for future posts and <a href="https://github.com/abraham/birb" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">GitHub</a>for code changes.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/69" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#69 Apply AnnotatedRegion that fixes</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-56087731407224220762018-12-30T16:05:00.003-06:002018-12-30T16:05:47.200-06:00A month of Flutter: the real hero animation<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDQAY3wQiKxJG-TVXw-EuUb5nnE5R2FeG_urdDjYSHZiU2i2SVF0IPm0mO8qagvn90fBIAu1tdoha2Wb5gl2-qSW6c0PNlTpmKJ2f8A_TtxY8MH3o2mMeOEQ8euGoTV6uxVLl5OwWI6RA/s1600/2018-12-30-a-month-of-flutter-hero-animation.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDQAY3wQiKxJG-TVXw-EuUb5nnE5R2FeG_urdDjYSHZiU2i2SVF0IPm0mO8qagvn90fBIAu1tdoha2Wb5gl2-qSW6c0PNlTpmKJ2f8A_TtxY8MH3o2mMeOEQ8euGoTV6uxVLl5OwWI6RA/s1600/2018-12-30-a-month-of-flutter-hero-animation.jpg" /></a></div>
<br />
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-hero-animation">bendyworks.com</a>.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
For the last post before the month's wrap up tomorrow, I wanted to do something more fun: use a <a href="https://flutter.io/docs/development/ui/animations/hero-animations" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">hero animation</a>between the home page list and the individual post page.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
When I first implemented the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Hero</code> animation it never worked going back from a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostPage</code> to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code>. The reason was that <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code> would get rerendered and that would <a href="https://bendyworks.com/blog/a-month-of-flutter-real-faker-data" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">generate new fake posts</a>. So I moved the fake data generation up a level to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">MyApp</code> and pass it into <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code>. This is more realistic as going to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code> shouldn't request the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post</code>s every time.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">HomePage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">title:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Birb'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">posts:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_loadPosts</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostPage</code> implementation is a simple <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">StatelessWidget</code> that takes <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post</code> and renders a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code>. This will become more complex as things like comments and likes are implemented but works for now.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostPage</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">StatelessWidget</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Key</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">})</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">super</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@override</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">build</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Scaffold</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">appBar:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AppBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">title:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Post'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">centerTitle:</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">true</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">elevation:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">0.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">body:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SingleChildScrollView</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Padding</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">padding:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">EdgeInsets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fromLTRB</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">8.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
With <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code> being used to render on the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code>and on the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostPage</code>, wrapping the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Image</code> in a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Hero</code> is handled in a single place. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">tag</code> is how <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Hero</code> knows what to transition between pages.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Hero</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tag:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">id</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ClipRRect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Image</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">network</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">imageUrl</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">borderRadius:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BorderRadius</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">circular</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">10.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The last piece is navigating from <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostList</code> to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostPage</code> when a user taps on a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code>. I'll handle this with an <a href="https://docs.flutter.io/flutter/material/InkWell-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">InkWell</code> widget</a> so there is a nice <a href="https://material.io/design/motion/understanding-motion.html#usage" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Material ripple</a>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">InkWell</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">onTap:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_navigateToPost</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The navigation is more complex then <a href="https://bendyworks.com/blog/a-month-of-flutter-navigate-to-user-registration" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">opening the registration page</a> for two reasons. <a href="https://flutter.io/docs/cookbook/navigation/named-routes" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Named routes</a> don't support parameters and I wanted a simple <a href="https://docs.flutter.io/flutter/widgets/PageRouteBuilder/buildTransitions.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">transition</a>between the rest of the content on the page.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_navigateToPost</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Navigator</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">push</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PageRouteBuilder</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pageBuilder:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Animation</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">double</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">animation</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Animation</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">double</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">secondaryAnimation</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">transitionsBuilder:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Animation</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">double</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">animation</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Animation</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">double</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">secondaryAnimation</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FadeTransition</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">opacity:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">animation</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Here I will <a href="https://docs.flutter.io/flutter/widgets/Navigator/push.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">push</code></a> a <a href="https://docs.flutter.io/flutter/widgets/PageRouteBuilder-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PageRouteBuilder</code></a> onto the navigation stack. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PageRouteBuilder</code> has two key builders in use here. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pageBuilder</code> builds the widget that should be rendered as the new page and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">transitionBuilder</code> specifies how to transition between the old and new pages. Note that this <a href="https://docs.flutter.io/flutter/widgets/FadeTransition-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FadeTransition</code></a> is not related to implementing <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Hero</code>earlier.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The tests for <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostPage</code> is simple and just checking that <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code> is rendered. I did update the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code> test to expect that its <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Hero</code> widget had the correct <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">tag</code> value.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Hero</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">hero</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tag</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">id</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code> tests had to be wrapped in a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">MaterialApp</code>as <a href="https://docs.flutter.io/flutter/material/InkWell-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">InkWell</code></a> must have a Material widget ancestor.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The navigation and animation from <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code> to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostPage</code> is now doing more work so I replaced several <a href="https://docs.flutter.io/flutter/flutter_test/WidgetTester/pump.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pump</code></a> pauses with <a href="https://docs.flutter.io/flutter/flutter_test/WidgetTester/pumpAndSettle.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pumpAndSettle</code></a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Here is the fancy <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Hero</code> animation:</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/2u-_GOWhWNc/0.jpg" src="https://www.youtube.com/embed/2u-_GOWhWNc?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<span style="color: #222222; font-size: 1.8rem;">Code changes</span></div>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/68" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#68 Add post page with hero animation</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-26798121381386280962018-12-29T21:34:00.000-06:002018-12-29T21:34:44.887-06:00A month of Flutter: user registration refactor with reactive scoped model<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEG0LZkImTtKYIV8CHrf9jutoOjY90eqlGbzBUV741-w4z91BTocsfiNZu_qJNbS-6dvGaB9zvQnkVKbO4VbbBIcQ8jC9w4_V-_gKAtG5-4sTpngrh4H4xebf1FlbpBOZCfhw2Vwy0hr8/s1600/2018-12-29-a-month-of-flutter-user-registration-refactor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1080" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEG0LZkImTtKYIV8CHrf9jutoOjY90eqlGbzBUV741-w4z91BTocsfiNZu_qJNbS-6dvGaB9zvQnkVKbO4VbbBIcQ8jC9w4_V-_gKAtG5-4sTpngrh4H4xebf1FlbpBOZCfhw2Vwy0hr8/s1600/2018-12-29-a-month-of-flutter-user-registration-refactor.jpg" /></a></div>
<br />
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-user-registration-refactor">bendyworks.com</a>.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<a href="https://bendyworks.com/blog/a-month-of-flutter-wip-save-users-to-firestore" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Yesterday I implemented</a> saving new users to Firestore but I wasn't happy with the implementation. So today I refactored <strong style="background: transparent; border: 0px; box-sizing: border-box; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">everything</strong>, well not everything but a lot. There are still areas for improvement but I like the general pattern being used now.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Now there is a top level <a href="https://pub.dartlang.org/packages/scoped_model" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ScopedModel</code></a> that tracks the current authentication status. This sets up a listener on <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseAuth</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Firestore</code> and will get pushed changes when either have changed. Children widgets that need to change functionality based on authentication status will get rerendered as needed.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
A couple of the less important changes that I'll get out of the way now.</div>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Auth</code> was renamed to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">AuthService</code></li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">The Firestore rules were updated to allow a user to read their own user document</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">Registration/sign in success <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> was replaced with an unstyled welcome view</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code> got <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">routeName</code> added</li>
</ul>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">MyApp</code>'s <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">build</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">MaterialApp</code> has been wrapped in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ScopedModel<CurrentUserModel></code>. I put <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ScopedModel</code> at the top because authentication changing will touch almost all of the app.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ScopedModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">model:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MaterialApp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">debugShowCheckedModeBanner:</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">false</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">title:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Birb'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">theme:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">buildThemeData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">home:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">HomePage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">title:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Birb'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">routes:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetBuilder</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">routeName</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ScopedModel</code> takes a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">model</code>, which in this case is <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentUserModel</code> (I'm not 100% in on that name yet) and acts similar to an <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">InheritedWidget</code>. Any children can find and interact with the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentuserModel</code>instance or be conditionally rendered based on its state.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Coming from a background in web development, I thinkf of <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Model</code>s differently than <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ScopedModel</code> does. Typically I think of models as single data objects like a blog post or tweet. In <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ScopedModel</code> land, it's more like a <a href="https://redux.js.org/basics/store" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">store</a> or <a href="https://en.wikipedia.org/wiki/Finite-state_machine" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">state machine</a> and can manage the state of several things.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I have set the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentStatusModel</code> to have one of three statues:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">enum</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Unauthenticated</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Unregistered</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Authenticated</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Unauthenticated</code> is the initial default</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Unregistered</code> the user has authenticated through Firebase</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Authenticated</code> is when the user has authenticated, agreed to the Terms of Service, and a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">User</code> document has been saved to Firestore</li>
</ul>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Here is the new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentUserModel</code> definition:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Model</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Firestore</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userService</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">UserService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">authService</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AuthService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">onAuthStateChanged</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">listen</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_onAuthStateChanged</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Unauthenticated</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Firestore</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuth</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">UserService</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">User</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_user</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUser</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AuthService</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">authService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">static</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ScopedModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">User</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">get</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_user</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">get</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_status</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUser</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">get</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signIn</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">authService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signOut</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signOut</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">register</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">formData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">createUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">formData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_onAuthStateChanged</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUser</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Unauthenticated</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">else</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">!=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">?.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Unregistered</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">!=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_user</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">?.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">id</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">getById</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">!=</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Authenticated</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">notifyListeners</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_listenToUserChanges</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_onUserDocumentChange</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">DocumentSnapshot</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">exists</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">User</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fromDocumentSnapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">documentID</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Authenticated</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">else</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Unregistered</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">notifyListeners</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_listenToUserChanges</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// TODO(abraham): Does this need any cleanup if uid changes?</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">collection</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'users'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">document</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshots</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">listen</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_onUserDocumentChange</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I have created a <a href="https://www.dartlang.org/guides/language/language-tour#named-constructors" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">named constructor</a> so that I can call <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentUserModel.instance()</code> and it will use the default services. The number of services this relies on is large and I think can be cleaned up in the future.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The first neat bit is <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">firebaseAuth.onAuthStateChanged.listen(_onAuthStateChanged)</code>. This adds a <a href="https://pub.dartlang.org/documentation/firebase_auth/latest/firebase_auth/FirebaseAuth/onAuthStateChanged.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">listener</a> to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseAuth</code> and anytime the user signs in or signs out the callback will be called.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There is a static <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">of</code> method for the convenience of being able to call <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentUserModel.of(context)</code> for easy access to the state.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">static</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ScopedModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">signIn</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">signOut</code>, and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">register</code> methods perform as they are named. They do consolidate a number of service dependencies into <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentUserModel</code> but I'm not sure this is the best place to have them.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_onAuthStateChanged</code> is the work horse of this class. Anytime <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseAuth</code> changes, this gets called and has to figure out what's going on. In essence if there is no user, it clears all the state, if the user is new or different it tries to get the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">User</code> document. Lastly it will notify children that the state has changed and will start listening to changes to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">User</code> document.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_listenToUserChanges</code> will listen to Firestore for changes to the authenticated user's document. One neat aspect is it can start listening before the document even exists and will get notified when it's created (from registering).</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Lastly in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentUserModel</code> is <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_onUserDocumentChange</code>. If the document exists the user is authenticated and registered.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I also added a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">User</code> model. It doesn't do much yet but handles taking a Firestore document and and turning it into a more manageable class instance.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
To make implementation easier, I added a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SignOutAction</code> widget to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">AppBar</code> in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code>. This simply renders an <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Icon</code> and calls <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentUserModel.of(context).signOut()</code> on tap.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiudHo56GDGmJYvQ0ROZLB7jqRQOx23bo_mTxXHFUDw4ecwYKl2mLqjds6CzI-9mRTIq6yRgcjYQ0wrQxcRUBArlaEHJNjJOJu3IYwJmfyxwaMmqn4igk1pL_SH-8Dvmhvbsvbwgq6wyX8/s1600/2018-12-29-a-month-of-flutter-user-registration-refactor-screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiudHo56GDGmJYvQ0ROZLB7jqRQOx23bo_mTxXHFUDw4ecwYKl2mLqjds6CzI-9mRTIq6yRgcjYQ0wrQxcRUBArlaEHJNjJOJu3IYwJmfyxwaMmqn4igk1pL_SH-8Dvmhvbsvbwgq6wyX8/s640/2018-12-29-a-month-of-flutter-user-registration-refactor-screenshot.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Another change in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code> is to wrap the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SignInFab</code>widget in a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ScopedModelDescendant<CurrentUserModel></code>. This will cause it to get rebuilt when <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentUserModel</code>notifies its children of state changes. The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">builder</code>callback has to return a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Widget</code> so I just return an empty <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Container</code> if the user is authenticated.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_floatingActionButton</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ScopedModelDescendant</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">builder:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">model</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">model</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">?</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SignInFab</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Container</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code> similarly gets updated with a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ScopedModelDescendant<CurrentUserModel></code>wrapper. This use is being a little smarter and will show the form if the user is authenticated but not registered and a welcome message once the user finishes registering. This message will need to be <a href="https://github.com/abraham/birb/issues/67" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">improved</a>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ScopedModelDescendant</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">builder:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">model</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">model</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Unregistered</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterForm</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">else</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">model</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">status</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Status</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Authenticated</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Center</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Welcome'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">else</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CircularProgressIndicator</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I haven't fleshed out all the tests yet but a lot of the code now has dependencies on <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CurrentUserModel</code> so I added a simple <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">appMock</code> to makes this easier.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ScopedModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">appMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">mock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">})</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ScopedModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CurrentUserModel</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">model:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">mock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MaterialApp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">home:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Scaffold</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">body:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">routes:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetBuilder</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">routeName</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/66" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#66 Create user in Firestore</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-54961140756204169082018-12-28T22:56:00.004-06:002018-12-28T22:56:30.289-06:00A month of Flutter: WIP save users to Firestore<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-dSKni9J4B045vNDjYBiDJBk1toDAyFzS_gdKoVQyhKnwIiIgpB1hGiZs3Tk8dOR_1Qjb1qNNrjZ1qg60lQGUZhhKkj8oqlTNXEeSbCveYuoZm4RXbqoY9DnHfo_AIn-a9cdZdX1pUkg/s1600/2018-12-28-a-month-of-flutter-wip-save-users-to-firestore.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-dSKni9J4B045vNDjYBiDJBk1toDAyFzS_gdKoVQyhKnwIiIgpB1hGiZs3Tk8dOR_1Qjb1qNNrjZ1qg60lQGUZhhKkj8oqlTNXEeSbCveYuoZm4RXbqoY9DnHfo_AIn-a9cdZdX1pUkg/s640/2018-12-28-a-month-of-flutter-wip-save-users-to-firestore.jpg" width="640" /></a></div>
<br />
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-wip-save-users-to-firestore">bendyworks.com</a>.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Today was supposed to be simple. Take <a href="https://bendyworks.com/blog/a-month-of-flutter-user-registration-form" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">form values</a>, <a href="https://bendyworks.com/blog/a-month-of-flutter-firestore-create-user-rules-and-tests" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">save them in Firestore</a>. It works but the current implementation is messy so I'm going to walk through the work in progress (WIP) code and refactor it tomorrow.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The larger architectural change was creating a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">UserService</code>to handle getting and creating users. This approach works but creates a complex dependency injection pattern that requires a lot of duplicate code and mocking in test. These are some of the current changes and what I don't like about the implementation:</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code> now takes a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">UserService</code> which in turn takes <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseAuth</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Firestore</code> instances. Doing this once wouldn't be so bad but I've had to instantiate <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">UserService</code> in several places. I'd like to find a better approach than <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">UserService</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userService:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">UserService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Firestore</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterForm</code> was updated to call <a href="https://docs.flutter.io/flutter/widgets/FormState/save.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FormState.save</code></a> on submit if the form is valid. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_submit</code> will also grab <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">photoUrl</code>and set it directly on <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_formData</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_submit</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formKey</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">currentState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validate</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">())</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formKey</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">currentState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">save</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'photoUrl'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">photoUrl</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">bool</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">result</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">addUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">result</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_showSnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Welcome </span><span class="si" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">${_formData['fullName']}</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Navigator</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pushNamed</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">HomePage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">routeName</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">else</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_showSnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Error submitting form'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_formData['key']</code> is clumsy so I'd like to refactor it to use <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_formData.key</code> instead. The <a href="https://docs.flutter.io/flutter/widgets/FormField/onSaved.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">onSaved</code> callback</a> on <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">TextFormField</code> takes the input value and sets it on <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_formData</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">TextFormField</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">initialValue:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">displayName</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">decoration:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">InputDecoration</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">labelText:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Full name'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validator:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">trim</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">isEmpty</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Full name is required'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">onSaved:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'fullName'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterForm</code> now takes a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseUser</code> and a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">UserService</code>. You might notice the repetitiveness repetitiveness of <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">UserService</code>. The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseUser</code> is used to pre-fill the form name fields so users can just submit the form if they want to use their Google registered names.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Here is how <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterForm</code> is called in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code>:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formWhenReady</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">?</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CircularProgressIndicator</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterForm</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUser:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userService:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">UserService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Firestore</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code> has a new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_getCurrentUser</code> method that will set the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_firebaseUser</code> state. Until <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_firebaseUser</code> is set, <a href="https://docs.flutter.io/flutter/material/CircularProgressIndicator-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CircularProgressIndicator</code></a> is displayed. Checking if there is a current user is going to happen a lot in the application so this needs to be much simpler to do.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_getCurrentUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUser</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">currentUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">setState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_firebaseUser</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">UserService</code> itself is fairly simple.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">UserService</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">UserService</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Firestore</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuth</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">currentUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">currentUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">bool</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">addUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">formData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">try</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">collection</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'users'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">document</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">setData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_newUserData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">formData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">true</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">catch</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">e</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">false</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_newUserData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">formData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>{}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">..</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">addAll</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">formData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">..</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">addAll</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(<</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>{</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'agreedToTermsAt'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FieldValue</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">serverTimestamp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'createdAt'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FieldValue</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">serverTimestamp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'updatedAt'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FieldValue</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">serverTimestamp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
It takes <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Firestore</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseAuth</code> instances so that it can get the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">currentUser</code> or create a new document with <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">setData</code>. I don't like having to inject <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">UserService</code> in multiple places and I would like to cleanup the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">formData</code>type.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FieldValue.serverTimestamp()</code> is a <a href="https://firebase.google.com/docs/reference/js/firebase.firestore.FieldValue#.serverTimestamp" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">special Firestore value</a> that will use the server timestamp when the document gets saved.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In the tests I'm now having to mock a lot more stuff. This is making the tests more verbose and harder to read and change. Come back tomorrow to see the exciting conclusion of the refactor.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/66/commits/9a631f70d532e8a175a717bd7d28c63b70231456" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#66 9a631f7 Create user in Firestore</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-86442066371332795392018-12-27T20:38:00.003-06:002018-12-27T20:38:44.231-06:00A month of Flutter: Firestore create user rules and tests<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4d2NWoniKpE_f6R6AxbClmTlxT7pevj-vFGIf9Fjki0N-y7NdM6VJN_eRcsoxXMCX4wVIkAJEEIh8njPhLE9wtw54vS57AZrFfvb7G7g701qmcC-Gyb5sFf237GSI_YW2kK95bSL9XZI/s1600/2018-12-27-a-month-of-flutter-firestore-create-user-rules-and-tests.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1029" data-original-width="1440" height="456" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4d2NWoniKpE_f6R6AxbClmTlxT7pevj-vFGIf9Fjki0N-y7NdM6VJN_eRcsoxXMCX4wVIkAJEEIh8njPhLE9wtw54vS57AZrFfvb7G7g701qmcC-Gyb5sFf237GSI_YW2kK95bSL9XZI/s640/2018-12-27-a-month-of-flutter-firestore-create-user-rules-and-tests.jpg" width="640" /></a></div>
<i><br /></i>
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-firestore-create-user-rules-and-tests">bendyworks.</a>com.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
When a user <a href="https://bendyworks.com/blog/a-month-of-flutter-sign-in-with-google" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">signs in with Google</a> I'm going to create a user document in Firestore. Each authenticated user should only be able to create one user document. These documents will eventually be readable by other users so Firestore needs to have <a href="https://firebase.google.com/docs/firestore/security/get-started" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">server(less)-side validation</a> to keep the data as correct as possible.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Right now I'm working on <a href="https://bendyworks.com/blog/a-month-of-flutter-user-registration-form/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">registering users</a> so I'm only going to implement <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">create</code> rules, not <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">read</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">update</code>, etc.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight javascript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">match</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">users</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userId</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">allow</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">create</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">isOwner</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userId</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">&&</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// TODO: enable after bug fix https://github.com/firebase/firebase-tools/issues/1073</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// validCreateTimestamps() &&</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validCreateUser</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This will allow <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">user</code> documents to be created if the owner has the same ID and the document being created passes validation.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Validation of timestamps is being skipped because of a <a href="https://github.com/firebase/firebase-tools/issues/1073" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">bug in the emulator</a> that causes tests to hang. I've also been considering moving <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">createdAt</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">updatedAt</code> timestamps into <a href="https://firebase.google.com/docs/functions/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Cloud Functions</a> but I'm not ready to make that commitment yet.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
User document creation is primarily validated with two tests. One to make sure an authenticated user can create their own document and one to make sure a user can't create a document for someone else.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight javascript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@</span><span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">test</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'can create self'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">db</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}).</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">collection</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'users'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">doc</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kr" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebase</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">assertSucceeds</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">set</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validUser</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@</span><span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">test</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'can not create someone else'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">db</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()).</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">collection</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'users'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">doc</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uuid</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">v4</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">());</span>
<span class="kr" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebase</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">assertFails</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">set</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validUser</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Additionally, there are several tests that iterate over a number of invalid values and assert they fail.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There are a number of helper methods I've defined in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">firestore.rules</code>:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight javascript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">function</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">isOwner</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userId</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">request</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">auth</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">!=</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">&&</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">request</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">auth</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">uid</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">userId</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">isOwner</code> helper checks to see if the user document ID matches that of the current authenticated user.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight javascript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">function</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validString</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()[</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">].</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">trim</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()[</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">&&</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()[</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">].</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">size</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">validString</code> helper checks to see that a required string has a value.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight javascript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">function</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validUrl</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">url</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">url</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">matches</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'https://[a-zA-Z].+'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">validUrl</code> helper checks that a string starts with <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">https://</code>. I'm pretty sure this will not correctly validate some URLs but this value should generally be set to a Google CDN so I don't think invalid hosts will come up.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight javascript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">function</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validCreateTimestamps</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">updatedAt</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">request</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">time</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">&&</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">createdAt</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">request</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">time</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">validCreateTimestamps</code> checks that the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">updatedAt</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">createdAt</code>values match the time on the request. This works because the client will set that value with a constant that Firestore will replace with the current time.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight javascript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">function</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validUser</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// TODO: prevent extra fields</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validString</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'nickname'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">&&</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validString</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'fullName'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">&&</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validString</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'photoUrl'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">&&</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validUrl</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">photoUrl</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">function</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validCreateUser</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validUser</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">&&</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">agreedToTermsAt</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">==</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">request</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">time</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The final two helpers are to validate a user document leveraging all the other helpers. One <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">TODO</code> I've left for the future is to make sure all fields on the document are on an <a href="https://github.com/abraham/birb/issues/65" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">allowed list</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I'm not completely happy with how the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">server</code> tests are currently organized. I will probably do some cleanup in the future to try and make everything more elegant. I plan on adding <a href="https://github.com/marak/Faker.js/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">faker.js</a> for fun too.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/64" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#64 Add Firestore rules for creating users</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-41096063406906233502018-12-26T21:08:00.001-06:002018-12-26T21:08:31.528-06:00A month of Flutter: set up Firestore rules tests<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUKjEz5IuFX9q0kgqH_iSv4Qi0rOTHs-6QR6465IPf-ugMx6xq0qJdugrBRZlDTu74C0hv3GClC01DYzlOCTvYQoP9Pf7gvmJT6GDN-9zQv3x-4Yye458poqtjNZJBi_2kpb3oEa6uH6o/s1600/2018-12-26-a-month-of-flutter-set-up-firestore-rules-tests.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUKjEz5IuFX9q0kgqH_iSv4Qi0rOTHs-6QR6465IPf-ugMx6xq0qJdugrBRZlDTu74C0hv3GClC01DYzlOCTvYQoP9Pf7gvmJT6GDN-9zQv3x-4Yye458poqtjNZJBi_2kpb3oEa6uH6o/s1600/2018-12-26-a-month-of-flutter-set-up-firestore-rules-tests.jpg" /></a></div>
<br />
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-set-up-firestore-rules-tests">bendyworks.com</a>.</i><br />
<i><br /></i>
<br />
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
One aspect of using Firestore for my data backend means I need to be certain my <a href="https://firebase.google.com/docs/firestore/security/get-started" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">security rules</a> are configured correctly. Otherwise users might be able to read or write date they shouldn't have access to.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
A few days ago I <a href="https://bendyworks.com/blog/a-month-of-flutter-setting-up-firebase-firestore" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">set up Firestore</a> in the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">server</code> directory. I'm going to continue that work and configure tests to run on the <a href="https://firebase.google.com/docs/firestore/security/test-rules-emulator" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Firestore emulator</a> based off of the <a href="https://github.com/firebase/quickstart-nodejs/tree/master/firestore-emulator/typescript-quickstart" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">typescript-qickstart</a> example.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">package.json</code> I'll add some <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">devDependencies</code> and define several <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">scripts</code>. <a href="https://docs.npmjs.com/misc/scripts" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Node package <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">scripts</code></a> can be run with <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">npm run <name></code>.</div>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">postinstall</code> will set up the Firestore emulator after <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">npm install</code> is run in the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">scripts</code> directory</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">start-emulator</code> will will do just that</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pretest</code> will compile the project's <a href="https://www.typescriptlang.org/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">TypeScript</a> files before the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">test</code> script is run</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">test</code> will run the actual tests within the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">test</code> directory using <a href="https://mochajs.org/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">mocha test runner</a></li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">posttest</code> will cleanup the test <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">*.js</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">*.js.map</code> files created during <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pretest</code></li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ci</code> uses a handy <a href="https://www.npmjs.com/package/start-server-and-test" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Node package <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">start-server-and-test</code></a> to start the emulator, wait for it to be ready, run the tests, and then shut down</li>
</ul>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I created a new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">tsconfig.json</code> file with <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">npx tsc --init</code>. The two main changes I made were to target <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">es6</code> instead of <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">es5</code> and enable <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">experimentalDecorators</code> for the <a href="https://www.npmjs.com/package/mocha-typescript" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">mocha-typescript</code> package</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Within <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">test/firestore.ts</code> I'm defining a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirestoreTest</code> class that will handle loading the rules, and setting up and tearing down test databases. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">mocha-typescript</code> will use a new instance of this class for each test. Each instance will use a different <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">projectId</code> to avoid different test runs from interfering with each other.</div>
<blockquote style="background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(183, 166, 41); border-left-style: solid; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 1px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 1rem 1.25rem 1rem 2em; quotes: none; vertical-align: baseline;">
<div style="background: transparent; border: 0px; box-sizing: border-box; color: #6f6f6f; font-size: 1.125rem; line-height: 1.6; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The Cloud Firestore emulator persists data. This might impact your results. To run tests independently, assign a different project ID for each, independent test. When you call firebase.initializeAdminApp or firebase.initializeTestApp, append a user ID, timestamp, or random integer to the projectID.</div>
<div style="background: transparent; border: 0px; box-sizing: border-box; color: #6f6f6f; font-size: 1.125rem; line-height: 1.6; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<em style="background: transparent; border: 0px; box-sizing: border-box; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://firebase.google.com/docs/firestore/security/test-rules-emulator" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Test your security rules</a></em></div>
</blockquote>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I changed <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">firestore.rules</code> so there was an allowed rule and a denied rule. These will be updated with real rules before the next deploy.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight javascript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">service</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">cloud</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">match</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">databases</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">database</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span><span class="sr" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/documents </span><span class="err" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{
</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">match</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="nb" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">document</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=**</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">allow</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">read</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">true</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">allow</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">write</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">false</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The initial tests for the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">user</code> collection in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">user_rules_test.ts</code> look like this:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight typescript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@</span><span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">suite</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Users</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirestoreTest</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@</span><span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">test</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'can read'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">db</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">collection</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'users'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">doc</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'alice'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kr" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebase</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">assertSucceeds</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">get</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">());</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@</span><span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">test</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'can not write'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">db</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">collection</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'users'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">doc</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'alice'</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kr" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebase</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">assertFails</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">set</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span> <span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">nickname</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'alice'</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}));</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">@suite</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">@test</code>, and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">class</code> style is supported by <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">mocha-typescript</code>. One of the reasons I chose TypeScript instead of JavaScript is because the types are similar to Dart much of the time.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I created a success test and a failure test to as proof of concept while setting up all the tooling. They get a database handle and assert that it can be read or written to.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I can now run <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">npm run ci</code> and see the following:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight shell" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"> Users
✓ can <span class="nb" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">read</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>162ms<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
✓ can not write <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>95ms<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
2 passing <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>462ms<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The next step will be to get these tests running along with the <a href="https://bendyworks.com/blog/a-month-of-flutter-configuring-continuous-integration" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">existing CI</a>.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/62" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#62 Set up Firestore rules tests</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-67873090494555441462018-12-25T15:15:00.000-06:002018-12-25T15:15:13.291-06:00Adding an iOS and Android adaptive icon.<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAm9eZ876oXPKIkE5VF6kX06wrYLhR-JNO6dR-BC_SwGLz-ndfB05HE6HXx6Qk-ild9fWt4HW7e-Sm03RKNZze_PEDRkTMQMP-yR7-P3SQaSiWmFk6qzq9G9ElQQ4giOJcKQXJpONs5Kc/s1600/2018-12-25-a-month-of-flutter-awesome-adaptive-icons.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="640" data-original-width="1080" height="378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAm9eZ876oXPKIkE5VF6kX06wrYLhR-JNO6dR-BC_SwGLz-ndfB05HE6HXx6Qk-ild9fWt4HW7e-Sm03RKNZze_PEDRkTMQMP-yR7-P3SQaSiWmFk6qzq9G9ElQQ4giOJcKQXJpONs5Kc/s640/2018-12-25-a-month-of-flutter-awesome-adaptive-icons.png" width="640" /></a></div>
<br />
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-awesome-adaptive-icons#">bendyworks.com</a>.</i><br />
<i><br /></i>
<br />
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
For this festive day of Christmas, I'm going to do something more fun and add a fancy icon. For android I will be using an <a href="https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">adaptive icon</a> so that it looks good in any shape and has a nice wiggle of movement.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
A big thank you goes to <a href="https://twitter.com/tommy_emo_" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">@tommy_emo_</a> for creating this awesome design.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha6rNz2xpMqARJtju0wsaJLph5FgOmO7ZAK9lJx1f4D7Ope53V7KX57ktdj6D6-rhEa-uaDZtvm-8OWaZIogV3YKbUHSatGAXXkPBcrAaf0t8liGsTVdhnTzfoz56rKJG9injWzHLuZXc/s1600/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="320" data-original-width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha6rNz2xpMqARJtju0wsaJLph5FgOmO7ZAK9lJx1f4D7Ope53V7KX57ktdj6D6-rhEa-uaDZtvm-8OWaZIogV3YKbUHSatGAXXkPBcrAaf0t8liGsTVdhnTzfoz56rKJG9injWzHLuZXc/s1600/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-logo.png" /></a></div>
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There is a nice <a href="https://pub.dartlang.org/packages/flutter_launcher_icons" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">flutter_launcher_icons</code> package</a> that makes the technical implementation easy.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
To start, require <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">flutter_launcher_icons</code> as a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">dev_dependency</code> in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pubspec.yaml</code>. Then there will be a new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">flutter_icons</code> key added with several values.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight yaml" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">flutter_icons</span><span class="pi" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span>
<span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">android</span><span class="pi" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="no" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">true</span>
<span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ios</span><span class="pi" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="no" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">true</span>
<span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">image_path_android</span><span class="pi" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">assets/icon/ic_launcher_xxxhdpi.png</span>
<span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">image_path_ios</span><span class="pi" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">assets/icon/ios.png</span>
<span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">adaptive_icon_background</span><span class="pi" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">assets/icon/ic_background.png</span>
<span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">adaptive_icon_foreground</span><span class="pi" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">assets/icon/ic_foreground.png</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">android</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ios</code> set to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">true</code> specifies that the tool should build icons for both Android and iOS.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Then there are four images defined:</div>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">image_path_android</code> will be used for the Android app and should be a full icon with transparent edges. This will get several sizes generated by the tool so I use the xxxhdpi size as the source image.</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">image_path_ios</code> will be used for the iOS app and <a href="https://stackoverflow.com/questions/26014461/black-border-on-my-ios-icon" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">should not have any transparent edges</a>. It is the same as the adaptive icon but with both layers in one image.</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">adaptive_icon_background</code> is the background scene of the adaptive icon. For Birb it's the sun and hills.</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">adaptive_icon_foreground</code> is the forground of the adaptive icon. For Birb it's the bird.</li>
</ul>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Once those four images were added to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">assets/icon</code> directory I ran the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">flutter_launcher_icons</code> tool to generate the correct assets and added all the changes to git.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight shell" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">$ </span>flutter packages pub run flutter_launcher_icons:main
Android minSdkVersion <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> 16
Creating default icons Android
Overwriting the default Android launcher icon with a new icon
Creating adaptive icons Android
Overwriting default iOS launcher icon with new icon
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The new icon on Android's home screen with a rounded square shape:</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioiU6OR4813FXj-KWxthoCHG7SxkwjcrdB3YmvQaWYeFR9PcuRGec-WZGQt1LThC1JXEVIsaqC1CbBupVM8rqKWcmHS266Z58NZBxaXEJwfMhnMZTvvPWGsBOMDW_jPau3T8-w2NLB-co/s1600/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-android-home-screen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioiU6OR4813FXj-KWxthoCHG7SxkwjcrdB3YmvQaWYeFR9PcuRGec-WZGQt1LThC1JXEVIsaqC1CbBupVM8rqKWcmHS266Z58NZBxaXEJwfMhnMZTvvPWGsBOMDW_jPau3T8-w2NLB-co/s640/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-android-home-screen.png" width="360" /></a></div>
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The new icon in Android's app switcher with a circle shape:</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF9H8hXGdf7LJb5diglJ5RdQVeb6GKaOxsIxv8feVQtr0gDl-KU86nvLDHSdcx0J0UQ3GRTiCdjPI7CZ5UJZMtqJgb5q3sJeWTPb6eJKbZf9Z4ujGhl5E1Pz-71HerO3_2aR7-sLIqRSQ/s1600/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-android-app-switcher.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF9H8hXGdf7LJb5diglJ5RdQVeb6GKaOxsIxv8feVQtr0gDl-KU86nvLDHSdcx0J0UQ3GRTiCdjPI7CZ5UJZMtqJgb5q3sJeWTPb6eJKbZf9Z4ujGhl5E1Pz-71HerO3_2aR7-sLIqRSQ/s640/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-android-app-switcher.png" width="360" /></a></div>
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The new icon on iOS's home screen:</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8qWS-UHyEtqUEMg9latLWzun736xbcNypSQ4kR9188NvQ8JSJSteck8Ow_8Ulv-iKRzWTqlP7wngzVRklxPYmF7fL8GEz_LzRHYWCBKg2tVXgM1MqMCgjwDo_5R8rZaLEhMEe9vwu1rY/s1600/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-ios-home-screen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="739" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8qWS-UHyEtqUEMg9latLWzun736xbcNypSQ4kR9188NvQ8JSJSteck8Ow_8Ulv-iKRzWTqlP7wngzVRklxPYmF7fL8GEz_LzRHYWCBKg2tVXgM1MqMCgjwDo_5R8rZaLEhMEe9vwu1rY/s640/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-ios-home-screen.png" width="294" /></a></div>
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The new icon in iOS's app switcher:</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjanxRV9ShupPQKeCY2XX5lRaX5SgAQzNLWngkMd-vxpBZIokiyEVGAGaQNp4GGJPoAyHfDT_Kwk1fDPuSZhTKQ-VswBV3RatbAwqkESwh0tJJ4cktv5yWts2yKDpQEgFI5nXS01h8NbLs/s1600/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-ios-app-switcher.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="739" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjanxRV9ShupPQKeCY2XX5lRaX5SgAQzNLWngkMd-vxpBZIokiyEVGAGaQNp4GGJPoAyHfDT_Kwk1fDPuSZhTKQ-VswBV3RatbAwqkESwh0tJJ4cktv5yWts2yKDpQEgFI5nXS01h8NbLs/s640/2018-12-25-a-month-of-flutter-awesome-adaptive-icons-ios-app-switcher.png" width="294" /></a></div>
<br /></div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/61" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#61 Add adaptive icons</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-23615781026639002082018-12-24T17:41:00.002-06:002018-12-24T17:41:45.206-06:00A month of Flutter: setting up Firebase Firestore<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid-tJmsLUxIzP8vhrg_OPzLSu1VWr8wf0o8Q-LftoKNL7u3Apzf03KtufrAws9ADaWSgWWO3PycbzK7aY19ayMnNsZB5XLMu3fJTW7Xo-l2jqMuZ69hRFM9Oxoz7y8HPYejA6sX3pcbIA/s1600/2018-12-24-a-month-of-flutter-setting-up-firebase-firestore.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid-tJmsLUxIzP8vhrg_OPzLSu1VWr8wf0o8Q-LftoKNL7u3Apzf03KtufrAws9ADaWSgWWO3PycbzK7aY19ayMnNsZB5XLMu3fJTW7Xo-l2jqMuZ69hRFM9Oxoz7y8HPYejA6sX3pcbIA/s640/2018-12-24-a-month-of-flutter-setting-up-firebase-firestore.jpg" width="640" /></a></div>
<br />
<i>Originally published on <a href="https://draft.blogger.com/A%20month%20of%20Flutter:%20setting%20up%20Firebase%20Firestore">bendyworks.com</a>.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
After a user <a href="https://bendyworks.com/blog/a-month-of-flutter-sign-in-with-google" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">signs in with Google</a> and <a href="https://bendyworks.com/blog/a-month-of-flutter-user-registration-form" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">registers</a>, their info needs to be saved to a databasee. I'm going to use <a href="https://firebase.google.com/docs/firestore/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Firebase Firestore</a> as my backend. Within the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">birb</code> codebase I'm going to create a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">server</code>directory and initialize a Firestore project inside it using <a href="https://www.npmjs.com/package/firebase-tools" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">firebase-tools</a>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight shell" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">$ </span>firebase init
<span class="c" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">######## #### ######## ######## ######## ### ###### ########</span>
<span class="c" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">## ## ## ## ## ## ## ## ## ## ##</span>
<span class="c" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">###### ## ######## ###### ######## ######### ###### ######</span>
<span class="c" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">## ## ## ## ## ## ## ## ## ## ##</span>
<span class="c" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">## #### ## ## ######## ######## ## ## ###### ########</span>
You<span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'re about to initialize a Firebase project in this directory:
/home/abraham/Development/birb
? Which Firebase CLI features do you want to setup for this folder? Press Space to select features, then Enter to confirm your choices.
◯ Database: Deploy Firebase Realtime Database Rules
❯◉ Firestore: Deploy rules and create indexes for Firestore
◯ Functions: Configure and deploy Cloud Functions
◯ Hosting: Configure and deploy Firebase Hosting sites
◯ Storage: Deploy Cloud Storage security rules
</span></code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I choose the <a href="https://bendyworks.com/blog/a-month-of-flutter-configure-sign-in-with-google-android" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">same Firebase project</a> being used for authentication, the default Firestore Rules file, and the default Firestore indexes file. By default <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">.firebaserc</code> is not <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">.gitignored</code>. I have added my <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">.firebasrc</code> to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">.gitignore</code> because this is an open source project. Anyone who forks Birb will need to set up their own Firebase project.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In the Firebase console I will now enable Firestore for the project.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEcM0SzcG5SaqDnTt201i4lUQmOOFPnNvEX4NL46tScQfDEtZYIn-RqyKVgKoxClZAhqTvMmpAzYmrPGv_3li9x18y6_eGdcoNRX7Iu6QQnoBHhJY1IiUqn_9cBOQcLqiyeZByadjBY3A/s1600/2018-12-24-a-month-of-flutter-setting-up-firebase-firestore.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1362" data-original-width="1600" height="544" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEcM0SzcG5SaqDnTt201i4lUQmOOFPnNvEX4NL46tScQfDEtZYIn-RqyKVgKoxClZAhqTvMmpAzYmrPGv_3li9x18y6_eGdcoNRX7Iu6QQnoBHhJY1IiUqn_9cBOQcLqiyeZByadjBY3A/s640/2018-12-24-a-month-of-flutter-setting-up-firebase-firestore.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Here are the default <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">firestore.rules</code> that just say don't allow reads or writes.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight javascript" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">service</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">cloud</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firestore</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">match</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">databases</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">database</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span><span class="sr" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/documents </span><span class="err" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{
</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">match</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="nb" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">document</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=**</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">allow</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">read</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="nx" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">write</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">false</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Deploying the rules is handled with the <a href="https://www.npmjs.com/package/firebase-tools" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">firebase-tools Node package</a>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight shell" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">$ </span>npx firebase deploy
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">===</span> Deploying to <span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'birb-app-dev'</span>...
i deploying firestore
i firestore: checking firestore.rules <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">for </span>compilation errors...
i firestore: reading indexes from firestore.indexes.json...
✔ firestore: rules file firestore.rules compiled successfully
i firestore: uploading rules firestore.rules...
✔ firestore: deployed indexes <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">in </span>firestore.indexes.json successfully
✔ firestore: released rules firestore.rules to cloud.firestore
✔ Deploy <span class="nb" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">complete</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">!</span>
Project Console: https://console.firebase.google.com/project/birb-app-dev/overview
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Installing the <a href="https://pub.dartlang.org/packages/cloud_firestore" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">cloud_firestore</code> package</a> in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pubspec.yaml</code> happens last.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Before integrating with the Flutter code, I'm going to write some rules with so come back soon for that article.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/57" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#57 Add Firestore</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-67766090975348787122018-12-23T14:26:00.003-06:002018-12-23T14:34:09.607-06:00A month of Flutter: testing forms<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglnLiSgdPmfMi6eLO2O8t6x8X2Y45Xpxo5mYdE6CJdFcFoC_gYlSdd0xhV1QFmOpKuHlJ1wYNh2uP76c7juEydDV7Shxh9zAxeEun0fqHb4lvmiBz2eqWu4j-JKVIuIfLNwCke-v9AhIo/s1600/2018-12-23-a-month-of-flutter-testing-forms.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglnLiSgdPmfMi6eLO2O8t6x8X2Y45Xpxo5mYdE6CJdFcFoC_gYlSdd0xhV1QFmOpKuHlJ1wYNh2uP76c7juEydDV7Shxh9zAxeEun0fqHb4lvmiBz2eqWu4j-JKVIuIfLNwCke-v9AhIo/s640/2018-12-23-a-month-of-flutter-testing-forms.jpg" width="640" /></a></div>
<br />
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-testing-forms">bendyworks.com</a>.</i><br />
<i><br /></i>
<br />
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
With the new <a href="https://bendyworks.com/blog/a-month-of-flutter-user-registration-form" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">user registration form</a> in place, it's time to make sure the form is <a href="https://flutter.io/docs/cookbook/testing/widget/tap-drag" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">tested</a> and will work as expected.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There are basically five different states that need to be tested.</div>
<h2 id="default-state" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Default state</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This is the view users will first arrive to and here I'm testing that all the components are present as expected.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Renders'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">app</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Register'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'I agree to the Terms of Services and Privacy Policy'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">TextFormField</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsNWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Checkbox</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<h2 id="submitted" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Submitted</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
To succesfully submit the form, I require the user to provide a nickname and a full name. In the test those values will be provided with <a href="https://docs.flutter.io/flutter/flutter_test/WidgetTester/enterText.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">enterText</code></a>. After filling out the two <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">TextFormFields</code> and submitting the form, I wait a tick for the success <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> to render.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Form can be submitted'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">app</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Finder</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">nickname</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widgetWithText</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">TextFormField</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Nickname'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Finder</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fullName</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widgetWithText</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">TextFormField</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Full name'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Finder</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">submit</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widgetWithText</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Register'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Form submitted'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsNothing</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">enterText</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">nickname</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Jess'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">enterText</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fullName</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Jess Sampson'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tap</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">submit</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pump</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Form submitted'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The success <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> is a temporary placeholder so that I have an in-app confirmation the form was submitted. Once user registration logic is in place this messaging to the user will change.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_submit</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formKey</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">currentState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validate</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">())</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SnackBar</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snackBar</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">content:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Form submitted'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Scaffold</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">showSnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<h2 id="required-fields" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Required fields</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Next there are two tests to make sure the nickname and full name fields are required. This checks that the required message was displayed and that the success message was not displayed.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Form requires nickname'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">app</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Finder</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">submit</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widgetWithText</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Register'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tap</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">submit</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pump</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Nickname is required'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Form submitted'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsNothing</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There are some improvements that could be made this error display. If a user focuses an errored <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">TextFormField</code> and enters a letter, the error message should disappear. I've <a href="https://github.com/abraham/birb/issues/55" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">created an issue</a> to implement this in the future.</div>
<h2 id="disabled-submit" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Disabled submit</h2>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
If a user disables the Terms of Service/Privacy Policy checkbox, they are not longer permitted to register. Here I am testing that the submit button is disabled if the checkbox is unchecked.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <a href="https://docs.flutter.io/flutter/flutter_test/WidgetController/widget.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">WidgetTester#widget</code> method</a> is a way to get a reference to a finder's actual widget. This is how I'm testing to see if the submit button is disabled. Usually you should test UI that the user can see but in this case the state of the button is conveyed to the user through its styling.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Submit disabled if TOS unchecked'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">app</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Finder</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">submit</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widgetWithText</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Register'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Finder</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tos</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Checkbox</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">submit</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">enabled</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">isTrue</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tap</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tos</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tap</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">submit</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pump</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">submit</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">enabled</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">isFalse</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Form submitted'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsNothing</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/54" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#54 Add registration form</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-2046637350914092772018-12-22T21:49:00.000-06:002018-12-23T10:29:19.393-06:00A month of Flutter: user registration form<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsK_zZsHvEl7EynEje8ck5PR80sn5maHnXc9_UkGq2XS_NbhBjUr8WuRUC_0o-ewYst8pRKNJ982aVL7ojXVAfrdh8BC5QhU1C_32oVAqGoBLGmFqh9UR4NJsFiecnmcLghsv7Ef8sRFc/s1600/2018-12-22-a-month-of-flutter-user-registration-form.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1042" data-original-width="1440" height="462" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsK_zZsHvEl7EynEje8ck5PR80sn5maHnXc9_UkGq2XS_NbhBjUr8WuRUC_0o-ewYst8pRKNJ982aVL7ojXVAfrdh8BC5QhU1C_32oVAqGoBLGmFqh9UR4NJsFiecnmcLghsv7Ef8sRFc/s640/2018-12-22-a-month-of-flutter-user-registration-form.jpg" width="640" /></a></div>
<i><br /></i>
<i><br /></i>
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-user-registration-form">bendyworks.com</a>.</i><br />
<i><br /></i>
<br />
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
After a user <a href="https://bendyworks.com/blog/a-month-of-flutter-navigate-to-user-registration" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">navigates to the registration page</a>, they should be able to enter their name and agree to the Terms of Service/Privacy Policy.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I'll start by updating <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code> to render a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterForm</code> widget that I'll create in a minute. Wrapped around the form is a <a href="https://docs.flutter.io/flutter/widgets/SingleChildScrollView-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SingleChildScrollView</code></a>. This scroll view is for when the keyboard in open and the form can't fit in the visible space.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Scaffold</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">appBar:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AppBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">title:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Register'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">centerTitle:</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">true</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">elevation:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">0.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">body:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SingleChildScrollView</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Padding</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">padding:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">EdgeInsets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fromLTRB</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">8.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterForm</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The majority of the work is going to be handled in the new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterForm</code>. The initial <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">StatefulWidget</code> structure is based on Flutter's <a href="https://flutter.io/docs/cookbook/forms/validation" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">building a form with validsation</a> recipe.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterForm</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">StatefulWidget</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterForm</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Key</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">})</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">super</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@override</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_RegisterFormState</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">createState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_RegisterFormState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_RegisterFormState</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">State</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterForm</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GlobalKey</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FormState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formKey</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GlobalKey</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FormState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>();</span>
<span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">bool</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_agreedToTOS</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">true</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@override</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">build</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Form</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">key:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formKey</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Column</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">crossAxisAlignment:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CrossAxisAlignment</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">start</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">children:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>[</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">TextFormField</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">decoration:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">InputDecoration</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">labelText:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Nickname'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validator:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">trim</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">isEmpty</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Nickname is required'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SizedBox</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">height:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">TextFormField</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">decoration:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">InputDecoration</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">labelText:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Full name'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validator:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">trim</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">isEmpty</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Full name is required'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Padding</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">padding:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">EdgeInsets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">symmetric</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">vertical:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Row</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">children:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>[</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Checkbox</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_agreedToTOS</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">onChanged:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_setAgreedToTOS</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GestureDetector</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">onTap:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_setAgreedToTOS</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(!</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_agreedToTOS</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'I agree to the Terms of Services and Privacy Policy'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Row</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">children:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>[</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Spacer</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">highlightedBorderColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">onPressed:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_submittable</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">?</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_submit</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Register'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">bool</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_submittable</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_agreedToTOS</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_submit</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_formKey</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">currentState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validate</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">print</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Form submitted'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_setAgreedToTOS</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">bool</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">newValue</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">setState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_agreedToTOS</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">newValue</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
It starts out with a <a href="https://docs.flutter.io/flutter/widgets/GlobalKey-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GlobalKey</code></a> to uniquely identify the form. This will be used later on to validate the state of the form.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There is also <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_agreedToTOS</code>, this is a boolean property that is updated to match if the TOS/PP checkbox is checked. If a user unchecks the checkbox, this boolean will turn to false and the submit button will be disabled.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
That brings up an intersting API design for <a href="https://docs.flutter.io/flutter/material/OutlineButton-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">OutlinedButton</code></a>:</div>
<blockquote style="background: rgb(255, 255, 255); border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: rgb(183, 166, 41); border-left-style: solid; border-right-color: initial; border-right-style: initial; border-top-color: initial; border-top-style: initial; border-width: 0px 0px 0px 1px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 1rem 1.25rem 1rem 2em; quotes: none; vertical-align: baseline;">
<div style="background: transparent; border: 0px; box-sizing: border-box; color: #6f6f6f; font-size: 1.125rem; line-height: 1.6; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
If the onPressed callback is null, then the button will be disabled and by default will resemble a flat button in the disabledColor.</div>
</blockquote>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
So if <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_agreedToTOS</code> is <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">true</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_submittable</code> will be <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">true</code> and the button will have a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">onPressed</code> callback. If the value is <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">false</code>, the callback will be set to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">null</code> and the button will be in a disabled state`.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">highlightedBorderColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">onPressed:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_submittable</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">?</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_submit</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">null</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Register'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <a href="https://docs.flutter.io/flutter/material/TextFormField-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">TextFormField</code>s</a> are pretty straightforward. They get some decoration with a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">labelText</code> since you should always label your inputs. They also get a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">validator</code> that just checks to see if it has a value or not.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">TextFormField</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">decoration:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">InputDecoration</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">labelText:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Nickname'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">validator:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">trim</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">isEmpty</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Nickname is required'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I choose to go with <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">nickname</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">full name</code> because I don't want to make <a href="https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">assumptions about names</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">TextFormField</code>s are by default <a href="https://material.io/design/components/text-fields.html#filled-text-field" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">filled</a> but I like <a href="https://material.io/design/components/text-fields.html#outlined-text-field" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">outlined</a> so I'm updating the theme. With the addition of these theme changes, the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ThemeData</code> definition was growing pretty large so I moved it to its own <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">theme.dart</code> file.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ThemeData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">brightness:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Brightness</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">light</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">primaryColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">white</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">accentColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">white</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">scaffoldBackgroundColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">white</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">textSelectionHandleColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">textSelectionColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black12</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">cursorColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">toggleableActiveColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">inputDecorationTheme:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">InputDecorationTheme</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">border:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineInputBorder</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">borderSide:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BorderSide</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">color:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">enabledBorder:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineInputBorder</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">borderSide:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BorderSide</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">color:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">withOpacity</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">0.1</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">focusedBorder:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">OutlineInputBorder</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">borderSide:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BorderSide</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">color:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">labelStyle:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">TextStyle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">color:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">black</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The important change is the addition of <a href="https://docs.flutter.io/flutter/material/InputDecorationTheme-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">inputDecorationTheme</code></a>. This sets the border style to be outlined and customizes the color based on the state of the input.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There are a couple of other theme changes:</div>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">toggleableActiveColor</code> changes the color of the checkbox.</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">cursorColor</code> changes the color of the blinking cursor in an input.</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">textSelectionColor</code> changes the highlight color when text is selected.</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">textSelectionHandleColor</code> changes the color of the handlers to select more or less text.</li>
</ul>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
One addition I made was to wrap the text for the checkbox in a <a href="https://docs.flutter.io/flutter/widgets/GestureDetector-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GestureDetector</code></a> so that if a user taps on the label, it will toggle the checkbox value.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GestureDetector</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">onTap:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_setAgreedToTOS</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(!</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_agreedToTOS</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'I agree to the Terms of Services and Privacy Policy'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Here are some screenshots of the registration form in several different states:</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Empty form:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbO9gcSDpAxeeUb7c5hdEnwjUdmGbw4YJkvEsVFKSXRoYTifSEbxjrfxYOg3u-7tqG1jh_AQY6VVurSQ8kmlpxW2k0pWnEmTYc1a1DUmFKT78M-7t4f0-W4DnEEpwoa7HomBQOY2ekDX0/s1600/2018-12-22-a-month-of-flutter-user-registration-form-screenshot-default.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbO9gcSDpAxeeUb7c5hdEnwjUdmGbw4YJkvEsVFKSXRoYTifSEbxjrfxYOg3u-7tqG1jh_AQY6VVurSQ8kmlpxW2k0pWnEmTYc1a1DUmFKT78M-7t4f0-W4DnEEpwoa7HomBQOY2ekDX0/s640/2018-12-22-a-month-of-flutter-user-registration-form-screenshot-default.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Filled out form:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1CiREjTGXHDkU7TEhaLUYRbdMg7hCEShuDHcB6IhTe87lQp5nkpBCzFp2Ykn5cOAayFXMcwFV8zPjzHHJ1AFW_MPT9JjZ1riDZoHCwwYtuNrN3lappa1G2upif4YNNVaitwCZU5yGFLM/s1600/2018-12-22-a-month-of-flutter-user-registration-form-screenshot-filled-out.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1CiREjTGXHDkU7TEhaLUYRbdMg7hCEShuDHcB6IhTe87lQp5nkpBCzFp2Ykn5cOAayFXMcwFV8zPjzHHJ1AFW_MPT9JjZ1riDZoHCwwYtuNrN3lappa1G2upif4YNNVaitwCZU5yGFLM/s640/2018-12-22-a-month-of-flutter-user-registration-form-screenshot-filled-out.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Disabled form:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTi-wqKJPA6G27dcEhfRHhdYZwGgfOeXDHXdq6_Fb8gov2OgFUr-ahZ2CKAwRxnvQRYtSk7n8nwWrdf_ogKoa-SiDnl2QTyR9UD4G8kRAET58hj1D9TD3GaXOXSA44ZuIXG34kvbVnBX0/s1600/2018-12-22-a-month-of-flutter-user-registration-form-screenshot-disabled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTi-wqKJPA6G27dcEhfRHhdYZwGgfOeXDHXdq6_Fb8gov2OgFUr-ahZ2CKAwRxnvQRYtSk7n8nwWrdf_ogKoa-SiDnl2QTyR9UD4G8kRAET58hj1D9TD3GaXOXSA44ZuIXG34kvbVnBX0/s640/2018-12-22-a-month-of-flutter-user-registration-form-screenshot-disabled.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Form with errors</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZmAaCrwu7L_lbszJqa5WdpZSaR7uhNGj3rf1jOWau7lE5DWdSfTaNmNtpPJcFTwwDUod8slDbQWGSuBY-XAAJaiFbbCQm-aPyBbOCuEJRhHOxP90I2BkpqbKQSi49C9wK14E9POOamFU/s1600/2018-12-22-a-month-of-flutter-user-registration-form-screenshot-errors.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZmAaCrwu7L_lbszJqa5WdpZSaR7uhNGj3rf1jOWau7lE5DWdSfTaNmNtpPJcFTwwDUod8slDbQWGSuBY-XAAJaiFbbCQm-aPyBbOCuEJRhHOxP90I2BkpqbKQSi49C9wK14E9POOamFU/s640/2018-12-22-a-month-of-flutter-user-registration-form-screenshot-errors.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Come back tomorrow to see how I'll test the various states of the form.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/54" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#54 Add registration form</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-6152912165988406192018-12-21T19:42:00.002-06:002018-12-21T19:42:19.394-06:00A month of Flutter: navigate to user registration<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq6-DSvpI2CHXHnxqs18mQgbCNm85e4p54IG5qbwbYeJiDABbpxvHoGV8VwaA-nQp2JdpcKN5JMiFkULBIF5gJyd0cfvt-R0IuIEDl4txrEVukAyOC04mcz9cZcVWrz-WG8EfyzxfKQfs/s1600/2018-12-21-a-month-of-flutter-navigate-to-user-registration.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq6-DSvpI2CHXHnxqs18mQgbCNm85e4p54IG5qbwbYeJiDABbpxvHoGV8VwaA-nQp2JdpcKN5JMiFkULBIF5gJyd0cfvt-R0IuIEDl4txrEVukAyOC04mcz9cZcVWrz-WG8EfyzxfKQfs/s640/2018-12-21-a-month-of-flutter-navigate-to-user-registration.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-navigate-to-user-registration">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
With users now being able to <a href="https://bendyworks.com/blog/a-month-of-flutter-sign-in-with-google" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">sign in with Google</a>, I want to have them confirm their name and agree to a terms of service. To lay the groundwork I'm going to add a placeholder <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code> and <a href="https://flutter.io/docs/cookbook/navigation/navigation-basics" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">navigation to it</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This will be my second page, of what I expect to be many, so I went ahead and created a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pages</code> directory. The existing <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">MyHomePage</code> class was renamed to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">HomePage</code> and relocated to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pages</code> directory. That's a refactor and ideally should be in its own pull request, but it's of minimal impact so I'm lumping in with today's other changes.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code> is simple and currently just displays some text. On the first implementation I did find that the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">AppBar</code> title was no not centered.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4jmPhtZwYIahpka3vWwRynZoeTVzP4ul5fPabcTA6qYSjcGkbZmNAMb0UsqUYjOVUbBbg9j6C0qyleNhHdg1K_SUvzh44gjTN5xi87N4cwv7SvWxQaPyPVDWZnlOljF2zMUDf2zlMzu0/s1600/2018-12-21-a-month-of-flutter-navigate-to-user-registration-screenshot-off-center.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4jmPhtZwYIahpka3vWwRynZoeTVzP4ul5fPabcTA6qYSjcGkbZmNAMb0UsqUYjOVUbBbg9j6C0qyleNhHdg1K_SUvzh44gjTN5xi87N4cwv7SvWxQaPyPVDWZnlOljF2zMUDf2zlMzu0/s640/2018-12-21-a-month-of-flutter-navigate-to-user-registration-screenshot-off-center.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This is because I was placing the text in a <a href="https://docs.flutter.io/flutter/widgets/Center-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Center</code> widget</a>. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Center</code> was centering the text in the space available to it but the back navigation icon was not being accounted for.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AppBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">title:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Center</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Register'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">elevation:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">0.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
A quick switch to using <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">centerTitle</code> fixes it.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AppBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">title:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Register'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">centerTitle:</span> <span class="kc" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">true</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">elevation:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">0.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIAf5azONCRHE9IJSBpYVGTYoYbMQXyTGfp2onK425kbXIysdRkH5TIJ0uFMoGM_eFpZYi_X-GeOCWGhlsH2d7nd1cOaU-SP2LO-YJ-MANCaTG1xQntPbkCtDxVR-SJjFWz5LwX1HrRcI/s1600/2018-12-21-a-month-of-flutter-navigate-to-user-registration-screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIAf5azONCRHE9IJSBpYVGTYoYbMQXyTGfp2onK425kbXIysdRkH5TIJ0uFMoGM_eFpZYi_X-GeOCWGhlsH2d7nd1cOaU-SP2LO-YJ-MANCaTG1xQntPbkCtDxVR-SJjFWz5LwX1HrRcI/s640/2018-12-21-a-month-of-flutter-navigate-to-user-registration-screenshot.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
But how do users get to this new registration page? It has to happen after a user is authenticated (how else will I know if they are registered?) but before they perform any other authenticated actions. That only leaves <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_handleSignIn</code> in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SignInFab</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_handleSignIn</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">auth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">then</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUser</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_existingUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">())</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_showSnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Welcome </span><span class="si" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">${user.displayName}</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">else</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_navigateToRegistration</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
For now I've set <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_existingUser</code> to return a hardcoded boolean. If they are an existing user they should just see the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code>, otherwise send them to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_navigateToRegistration</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Navigator</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pushNamed</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">routeName</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_navigateToRegistration</code> uses the <a href="https://docs.flutter.io/flutter/widgets/Navigator-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Navigator</code> widget</a> to push a new route onto the stack by name. In this case I'm defining the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">routeName</code> in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code> itself so if I want to change it later, I only have to change it in one place.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">MyApp</code> I will now register the route with <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">MaterialApp</code>, also using the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">routeName</code> from <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">RegisterPage</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MaterialApp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// ...</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">home:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">HomePage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">title:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Birb'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">routes:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetBuilder</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">routeName</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">RegisterPage</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
</code></pre>
</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/53" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#53 Add RegisterPage and route</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-41873757496027162662018-12-20T22:38:00.000-06:002018-12-20T22:38:36.104-06:00A month of Flutter: delicious welcome snackbar<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMEQSirqrrwhfl-wEA4nNy5aTVbQBXPHtGLgwhTqG2qAQW3cC9aqEgBwhsggHRutv5PaoE1qoT_Ssop4xlkXaTcdSCNqst4ZT5kxQOp4ucujQEJpqg2LgfwbhtmJpfCfLTTBXdguesEQY/s1600/2018-12-20-a-month-of-flutter-delicious-welcome-snackbar.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="810" data-original-width="1440" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMEQSirqrrwhfl-wEA4nNy5aTVbQBXPHtGLgwhTqG2qAQW3cC9aqEgBwhsggHRutv5PaoE1qoT_Ssop4xlkXaTcdSCNqst4ZT5kxQOp4ucujQEJpqg2LgfwbhtmJpfCfLTTBXdguesEQY/s640/2018-12-20-a-month-of-flutter-delicious-welcome-snackbar.jpg" width="640" /></a></div>
<br />
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-delicious-welcome-snackbar">bendyworks.com</a>.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
When a user goes to sign in, they should be told if it was successful. I'm going to do that with a <a href="https://docs.flutter.io/flutter/material/SnackBar-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> widget</a>. Note that the Flutter <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> style is <a href="https://github.com/flutter/flutter/issues/19841" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">out of date</a> with the current <a href="https://material.io/design/components/snackbars.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Material Design spec</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The code changes are not major but include a couple of interesting aspects. One is that the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> API requires a reference to the parent <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Scaffold</code> widget. This is because the positioning of a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> is very specific. If you just display it without regard it'll overlay things like <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">BottomAppBar</code>s or <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FloatingActionButton</code>s. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Scaffold</code> controls the positioning of those widgets so it can make sure <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code>s don't interfere with them. The new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_showSnackBar</code> method will handle showing the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_showSnackBar</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">msg</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SnackBar</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snackBar</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">content:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">msg</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Scaffold</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">showSnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_handleSignIn</code> has been updated to trigger a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> with a message and it will pass through the <a href="https://docs.flutter.io/flutter/widgets/BuildContext-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">current <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">BuildContext</code></a>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_handleSignIn</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">auth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">then</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUser</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_showSnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Welcome </span><span class="si" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">${user.displayName}</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SignInFab</code> tests will have to get wrapped in a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Scaffold</code> widget to render properly. I've also taken the time to split the existing test in two, one for the rendering of the FAB and one for triggering the sign in flow.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
A new test will assert there is not already a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code>, trigger a tap on the FAB, pause to let the widgets render, and then make sure the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> is rendered as expected.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Displays welcome SnackBar'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Build our app and trigger a frame.</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">app</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsNothing</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tap</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FloatingActionButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pump</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Duration</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">zero</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SnackBar</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Welcome </span><span class="si" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">${userMock.displayName}</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There is now a nice notification when a user finishes signing in.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDiwqUU6mUsYzZmmeOFUgFxmZbJGabVd3j1bfsq7zjUyntvXgrD6WjNsJO_GO-8Dfuhyphenhyphenj2rVXAtNE0jkvssWojbNq_-2QLt77BvZsmKRxD2_xEvI5rP0G9ME8eIWAgFPFsgmLfAgf9fIU/s1600/2018-12-20-a-month-of-flutter-delicious-welcome-snackbar-screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDiwqUU6mUsYzZmmeOFUgFxmZbJGabVd3j1bfsq7zjUyntvXgrD6WjNsJO_GO-8Dfuhyphenhyphenj2rVXAtNE0jkvssWojbNq_-2QLt77BvZsmKRxD2_xEvI5rP0G9ME8eIWAgFPFsgmLfAgf9fIU/s640/2018-12-20-a-month-of-flutter-delicious-welcome-snackbar-screenshot.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
While working on this I've noticed there is a bug in bottom navigation icon colors. They switch to white on black while the authentication flow is happening but then the icons never switch back to black. I've <a href="https://github.com/abraham/birb/issues/51" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">filed a bug</a> to look into a fix.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I also experimented with a light theme <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SnackBar</code> but it doesn't provide enough contrast for my taste.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivu7f_qtt8BtS9l6oR80KX9r_OB4qk7HecRYQcMqFvAz9mUxUg65DX3IFUoB_SwDTp0sWxQI7MSc_Bxs3-DsAVNw4bTQXE22SMlWB0cSR6v4wu4c5xybjbNTxwr2lLBeRbQSqZucbqmB0/s1600/2018-12-20-a-month-of-flutter-delicious-welcome-snackbar-screenshot-white.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivu7f_qtt8BtS9l6oR80KX9r_OB4qk7HecRYQcMqFvAz9mUxUg65DX3IFUoB_SwDTp0sWxQI7MSc_Bxs3-DsAVNw4bTQXE22SMlWB0cSR6v4wu4c5xybjbNTxwr2lLBeRbQSqZucbqmB0/s640/2018-12-20-a-month-of-flutter-delicious-welcome-snackbar-screenshot-white.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/50" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#50 Show welcome message</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-25742513229479024312018-12-19T22:22:00.002-06:002018-12-19T22:22:15.832-06:00A month of Flutter: mocking Firebase Auth in tests<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwsUHVBBHXzXIzGUqhjyqGeufE1Ic-SPz1H2K0xOxfewn2TYelwr_HBm5u8rjTJqfSrj1kMjCoooPXObkr6K2_UJZSqXnN7V7J0KXvpQKbjUmzOBvUB5TgYK8wIZz1A8DyONIRRUppDH8/s1600/2018-12-19-a-month-of-flutter-mocking-firebase-auth-in-tests.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwsUHVBBHXzXIzGUqhjyqGeufE1Ic-SPz1H2K0xOxfewn2TYelwr_HBm5u8rjTJqfSrj1kMjCoooPXObkr6K2_UJZSqXnN7V7J0KXvpQKbjUmzOBvUB5TgYK8wIZz1A8DyONIRRUppDH8/s640/2018-12-19-a-month-of-flutter-mocking-firebase-auth-in-tests.jpg" width="640" /></a></div>
<br />
<br />
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-mocking-firebase-auth-in-tests">bendyworks.com</a>.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<a href="https://bendyworks.com/blog/a-month-of-flutter-sign-in-with-google" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Sign in with Google</a> adds a wildcard to the app: external services. External services are usually avoided in test environments because they create variance and complexity so today I'm going to talk about creating <a href="https://pub.dartlang.org/packages/mockito" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">mocks</a> to simulate interacting with these third-party APIs.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Mocks in tests provide two main features: stubbing methods and objects so they behave like real things and validation that methods and properties are called as expected.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
To create a mock for <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseAuth</code> is as simple as:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuthMock</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Mock</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">implements</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuth</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I've also created <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseUserMock</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignInMock</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignInAuthenticationMock</code>, and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignInAccountMock</code>. For now they are mostly simple mocks but they can be created with more complex states and responses stubbed.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The majority of the tests written for yesterday was testing the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Auth</code> service.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">group</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Auth'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuthMock</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuthMock</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuthMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInMock</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInMock</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUserMock</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUserMock</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUserMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInAccountMock</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAccountMock</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInAccountMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInAuthenticationMock</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAuthenticationMock</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInAuthenticationMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Auth</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">auth</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Auth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuthMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignIn:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">test</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'signInWithGoogle returns a user'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">when</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signIn</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">thenAnswer</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInAccountMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAccountMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">when</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAccountMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">authentication</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">thenAnswer</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInAuthenticationMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAuthenticationMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">when</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuthMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">idToken:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAuthenticationMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">idToken</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">accessToken:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAuthenticationMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">accessToken</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">thenAnswer</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUserMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUserMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">auth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseUserMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">verify</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signIn</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">called</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">verify</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAccountMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">authentication</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">called</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">verify</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuthMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">idToken:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAuthenticationMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">idToken</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">accessToken:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignInAuthenticationMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">accessToken</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">called</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
First I'm instantiating five mock objects and an instance of <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Auth</code> which is getting passed the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseAuth</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignIn</code> mocks. These are the primary mocks that represent those two services in the functional code.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Within the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">test</code> example I'm specifying that when <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">signIn</code> gets called on the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignIn</code>mock, it should return an instance of the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignInAccount</code> mock using <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">thenAnswer</code>. <a href="https://pub.dartlang.org/documentation/mockito/latest/mockito/PostExpectation/thenAnswer.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">thenAnswer</code></a> is just like <a href="https://pub.dartlang.org/documentation/mockito/latest/mockito/PostExpectation/thenReturn.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">thenReturn</code></a> but is for returning asynchronous values.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There are then stubs for two more external services before the actual <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">signInWithGoogle</code> method being tested. This <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">expect</code> asserts the response is the mocked <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseUser</code> that it should be.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
After that I have three <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">verify</code> assertions. These check with the mocks to make sure the API methods were called with the expected inputs. With this test in place I can be reasonably sure that as long as the external services don't change their APIs, my code will keep working as desired.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Auth</code> tests need to be fleshed out some to make sure they handle error cases in the external services. There was an <a href="https://github.com/abraham/birb/issues/48" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">issue</a> created to track adding this error handling.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The last part I want to test is that when a user taps on the Sign in with Google FAB, the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Auth</code> service will be called as expected. The pattern of mocks here is the same as above but just simpler.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Renders sign in'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AuthMock</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">mock</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AuthMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Build our app and trigger a frame.</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MaterialApp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">home:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SignInFab</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">auth:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">mock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">when</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">mock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">())</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">thenAnswer</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUserMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUserMock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Image</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FloatingActionButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Sign in with Google'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tap</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FloatingActionButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">verify</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">mock</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">called</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<a href="https://flutter.io/docs/testing" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Testing</a> is a critical aspect of making sure applications continue to work as they are changed. These are unit tests and widget tests which are important but there is a third type of test: integration. Integration tests are really good for making sure a full feature flow continues to work. I'll be working on adding integration tests in the future.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/44" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#44 Add sign in service</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-46517305915986902492018-12-18T17:42:00.002-06:002018-12-18T17:42:31.239-06:00A month of Flutter: Sign in with Google<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeplqLcaSqN5c3tfa__gLmQJUPY2JJ_-ZjPITBbVfAjhDfcv2zwknz8a_X0DNqu8EO6rhPMN4eDp6pGcUfd-kawWRbBVrPMW5Mk8xB6fCPBGGqwIsS2wgbbiexcNB7WQsIyR1iCtZODAk/s1600/2018-12-18-a-month-of-flutter-sign-in-with-google.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeplqLcaSqN5c3tfa__gLmQJUPY2JJ_-ZjPITBbVfAjhDfcv2zwknz8a_X0DNqu8EO6rhPMN4eDp6pGcUfd-kawWRbBVrPMW5Mk8xB6fCPBGGqwIsS2wgbbiexcNB7WQsIyR1iCtZODAk/s640/2018-12-18-a-month-of-flutter-sign-in-with-google.jpg" width="640" /></a></div>
<br />
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-sign-in-with-google">bendyworks.com</a>.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Building on the work configuring Firebase Auth for <a href="https://bendyworks.com/blog/a-month-of-flutter-configure-sign-in-with-google-android" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Android</a> and <a href="https://bendyworks.com/blog/a-month-of-flutter-configure-sign-in-with-google-ios" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">iOS</a>, it's time to go get a user's details. This will be leveraging the already installed <a href="https://pub.dartlang.org/packages/google_sign_in" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">google_sign_in</code></a> and <a href="https://pub.dartlang.org/packages/firebase_auth" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">firebase_auth</code></a> packages.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The big change is the addition of the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Auth</code> class.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Auth</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Auth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignIn</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignIn</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignIn</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuth</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUser</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInAccount</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleAccount</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignIn</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signIn</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// TODO(abraham): Handle null googleAccount</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignInAuthentication</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleAuth</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleAccount</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">authentication</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">accessToken:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">accessToken</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">idToken:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">idToken</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This class gets passed a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseAuth</code> instance and a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignIn</code>instance for interactions with the external authentication services. On <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignIn</code> the <a href="https://pub.dartlang.org/documentation/google_sign_in/latest/google_sign_in/GoogleSignIn/signIn.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">signIn</code> method</a> will trigger a user account selection prompt. When the user confirms their account selection a <a href="https://pub.dartlang.org/documentation/google_sign_in/latest/google_sign_in/GoogleSignInAccount-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignInAccount</code> instance</a> will be returned. On <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignInAccount</code> I'll call <a href="https://pub.dartlang.org/documentation/google_sign_in/latest/google_sign_in/GoogleSignInAccount/authentication.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">authentication</code></a> to get the <a href="https://pub.dartlang.org/documentation/google_sign_in/latest/google_sign_in/GoogleSignInAuthentication-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">current user's tokens</a>. Finally I'll exchange the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleSignInAuthentication</code> for a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseUser</code> with <a href="https://pub.dartlang.org/documentation/firebase_auth/latest/firebase_auth/FirebaseAuth/signInWithGoogle.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">signInWithGoogle</code></a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I added a TODO to <a href="https://github.com/abraham/birb/issues/48" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">improve error handling</a> so it doesn't get forgotten.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The app now has an authenticated <a href="https://pub.dartlang.org/documentation/firebase_auth/latest/firebase_auth/FirebaseUser-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">FirebaseUser</code></a> with all the accompanying details.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I'll now update <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SignInFab</code> to leverage the new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Auth</code> service and print out the user's <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">displayName</code> in the Flutter logs.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">void</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_handleSignIn</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">auth</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">signInWithGoogle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">then</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseUser</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">user</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">print</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Hi </span><span class="si" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">${user.displayName}</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight plaintext" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;">I/flutter (29142): Hi Birb Dev
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SignInFab</code> will also need to be passed an <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Auth</code> instance in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_MyHomePageState</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SignInFab</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">auth:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Auth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">firebaseAuth:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FirebaseAuth</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">instance</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">googleSignIn:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">GoogleSignIn</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This is what the account selector looks like on Android:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV92wc7m1pltegO-ZtJiDmDTjro2s8wUXtahj6UTmm8bTSyNURtFDWNmCYGHUitpdC5iY6jV9Kcm0Vrv7Y2zppFLH7p1iSoBa5hhx1q0gJNvUamBTZAXrEdKZzyOZ28INA1UhiAZz6Bd0/s1600/2018-12-18-a-month-of-flutter-sign-in-with-google-android.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV92wc7m1pltegO-ZtJiDmDTjro2s8wUXtahj6UTmm8bTSyNURtFDWNmCYGHUitpdC5iY6jV9Kcm0Vrv7Y2zppFLH7p1iSoBa5hhx1q0gJNvUamBTZAXrEdKZzyOZ28INA1UhiAZz6Bd0/s640/2018-12-18-a-month-of-flutter-sign-in-with-google-android.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
iOS prompts to allow access to google.com:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigJAi0MUnAGSa9Ypv1H6gUnfk4KJKrpoiVfv8RiXVrzy_KjC7HoenuFJavmet61gxqfHSP5DLjUrUWUUOgYNHHxnW_n-cr-uDrEuJGlyRZW0ObZfFuxjvqY-1FPdiE3OIGRORB5SKje2k/s1600/2018-12-18-a-month-of-flutter-sign-in-with-google-ios.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="739" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigJAi0MUnAGSa9Ypv1H6gUnfk4KJKrpoiVfv8RiXVrzy_KjC7HoenuFJavmet61gxqfHSP5DLjUrUWUUOgYNHHxnW_n-cr-uDrEuJGlyRZW0ObZfFuxjvqY-1FPdiE3OIGRORB5SKje2k/s640/2018-12-18-a-month-of-flutter-sign-in-with-google-ios.png" width="294" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Most of the new code is actually tests and mocking the external Google and Firebase APIs. It's complected and deserves it's own article so come back tomorrow to learn more.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/44" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#44 Add sign in service</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-90142349278300862592018-12-17T14:35:00.000-06:002018-12-17T14:35:14.849-06:00A month of Flutter: configure Firebase Auth for Sign in with Google on iOS<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHRpS8CGJB1UcQoytcE_8uY5e3I33amda7C8ZNnwCbd8mWcjEtQj1w5gkmaVvRfrCXc9dQZOgIVb0xZ-8Z1MZvCZ0VzzCh2hnkh55QbKP7Njkm1LfxkYWLl-nhRAiP19cL8zAiaTu5fLU/s1600/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1015" data-original-width="1440" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHRpS8CGJB1UcQoytcE_8uY5e3I33amda7C8ZNnwCbd8mWcjEtQj1w5gkmaVvRfrCXc9dQZOgIVb0xZ-8Z1MZvCZ0VzzCh2hnkh55QbKP7Njkm1LfxkYWLl-nhRAiP19cL8zAiaTu5fLU/s640/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios.jpg" width="640" /></a></div>
<i><br /></i>
<i><br /></i>
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-configure-sign-in-with-google-ios">bendyworks.com</a>.</i><br />
<i><br /></i>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Yesterday I configured Sign in with Google on <a href="https://bendyworks.com/blog/a-month-of-flutter-configure-sign-in-with-google-android" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Android</a>. Today is more of the same but in iOS land.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
From the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">app</code> directory I ran <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">open ios/Runner.xcworkspace</code> to open the iOS project in Xcode. Then in Xcode I selected <a href="https://codelabs.developers.google.com/codelabs/flutter-firebase/index.html#6" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">"Runner" under "Project navigator"</a>in the left sidebar followed by "Runner" under "Targets" in the main content area. Here I set "Bundle identifier" to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">app.birb</code>.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNUaWepy_1XEmoR6B43G0fVbYDEZW6TYQPkUH316xLZA-gn9UcxdQPzmk1mMNwXVgD8p-U9dlflJ176IDEkPCIHQCPBGl-lw56jzomwNfxBYkMmTaYmJK2HS4XIJK9LGfmBN8HmodwfS4/s1600/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-xcode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1021" data-original-width="1600" height="408" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNUaWepy_1XEmoR6B43G0fVbYDEZW6TYQPkUH316xLZA-gn9UcxdQPzmk1mMNwXVgD8p-U9dlflJ176IDEkPCIHQCPBGl-lw56jzomwNfxBYkMmTaYmJK2HS4XIJK9LGfmBN8HmodwfS4/s640/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-xcode.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Using the development <a href="https://firebase.google.com/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Firebase project</a> from yesterday, I added a new iOS app using the same bundle ID.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlq6MTWgPsrQTkkOrNrNfWDp5fF1h410J4maw_B3CSc1u7bATm_Sf-sZeMqYmEATrdFwhlfYPjNyQmzYn8MOTO35KOrnoUGgu7OJ3ndE9eFNhmKVvhn9qC9ThneAGR-j7m1-iIsTyLXag/s1600/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-new-app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1207" data-original-width="1600" height="482" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlq6MTWgPsrQTkkOrNrNfWDp5fF1h410J4maw_B3CSc1u7bATm_Sf-sZeMqYmEATrdFwhlfYPjNyQmzYn8MOTO35KOrnoUGgu7OJ3ndE9eFNhmKVvhn9qC9ThneAGR-j7m1-iIsTyLXag/s640/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-new-app.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Firebase then prompted me to download a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleService-Info.plist</code> file.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQPL5x6N9bdRAsrOZa4B9KMebkZLFSDcDpzT_aXxUTy0peKoT2Mdx5-k6EEJCq3_D_eNH63sYsB1FqeNz49Zqm2Fqnewizbf-_vZNWMF0vFvIOqdO4cELkIOmyTLULslZOHZjhxFuVb5Q/s1600/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-download-config.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1207" data-original-width="1600" height="482" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQPL5x6N9bdRAsrOZa4B9KMebkZLFSDcDpzT_aXxUTy0peKoT2Mdx5-k6EEJCq3_D_eNH63sYsB1FqeNz49Zqm2Fqnewizbf-_vZNWMF0vFvIOqdO4cELkIOmyTLULslZOHZjhxFuVb5Q/s640/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-download-config.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Once downloaded, I dragged the plist file into the Xcode "project navigation" sidebar within the "Runner" directory next to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Info.plist</code>. By dragging it into Xcode, it gets registered for inclusion during builds. There isn't any sensitive information in the file but for an open source project it will need to be different for every developer so I'm adding it to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">.gitignore</code>.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj1X5HwthNLVN_DWhdoQ2G3qrgV9IWdvdrUbYc2F12R3KyjOFNWt7ysYCI4vQ_SrwG3WEIVfRK1XIoYK9LWbCgoi2W8uDecFILMIS2ksDW-8ulrE9GtKfUDkEz71qPPN5GrhwFDhTLq4A/s1600/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-xcode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1021" data-original-width="1600" height="408" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj1X5HwthNLVN_DWhdoQ2G3qrgV9IWdvdrUbYc2F12R3KyjOFNWt7ysYCI4vQ_SrwG3WEIVfRK1XIoYK9LWbCgoi2W8uDecFILMIS2ksDW-8ulrE9GtKfUDkEz71qPPN5GrhwFDhTLq4A/s640/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-xcode.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I then skipped step three "add Firebase SDK" and step four "add initialization code".</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There is one <a href="https://pub.dartlang.org/packages/google_sign_in#ios-integration" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">important change</a> to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ios/Runner/Info.plist</code>: configuring a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CFBundleURLSchemes</code>. The value can be copied from the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">GoogleServiceInfo.plist</code> file. I would like to not hard code this but I currently don't have a better alternative.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight xml" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><array></span>
<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><dict></span>
<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><key></span>CFBundleTypeRole<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"></key></span>
<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><string></span>Editor<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"></string></span>
<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><key></span>CFBundleURLSchemes<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"></key></span>
<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><array></span>
<span class="c" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><!-- Copied from GoogleServices-Info.plist key REVERSED_CLIENT_ID --></span>
<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><string></span>com.googleusercontent.apps.483795507272-cavro2su6d78ldumt6003lo2krdrb2dd<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"></string></span>
<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"></array></span>
<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"></dict></span>
<span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"></array></span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Starting the app should give Firebase the all set signal.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgtAlA4Wedk0URks7uIMNXi4BVMiBh7PodL5s8i29jVnIH8yg5ai1YBPQK7bUITVdBDSM2gUpGmYz3OXwi5-uzAb3XBmoziZuoX6AVZ8QifxfrzKYMAK9mWq3dResGz0upCwHfpy_Cldk/s1600/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-all-set.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1207" data-original-width="1600" height="482" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgtAlA4Wedk0URks7uIMNXi4BVMiBh7PodL5s8i29jVnIH8yg5ai1YBPQK7bUITVdBDSM2gUpGmYz3OXwi5-uzAb3XBmoziZuoX6AVZ8QifxfrzKYMAK9mWq3dResGz0upCwHfpy_Cldk/s640/2018-12-17-a-month-of-flutter-configure-sign-in-with-google-ios-all-set.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
And the Sign in with Google button still doesn't do anything but maybe tomorrow it really will.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/47" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#47 Configure Firebase Auth iOS</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-44824613349802895412018-12-16T19:14:00.000-06:002018-12-16T19:14:27.508-06:00A month of Flutter: configure Firebase Auth for Sign in with Google on Android<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAGl-DsRIiGMTtQtt1OjYMWOdKZSheu_VjBxSiqR1UQ5_WLPIEwQk6p7d__XwEQtZxVc6Qs0jJbS11WR1oTvWbfl50BaatOowFOyQyWLfqO4NH8aytJJX54ygB2VSgbl_MU6s9-tT3yD4/s1600/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1007" data-original-width="1440" height="446" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAGl-DsRIiGMTtQtt1OjYMWOdKZSheu_VjBxSiqR1UQ5_WLPIEwQk6p7d__XwEQtZxVc6Qs0jJbS11WR1oTvWbfl50BaatOowFOyQyWLfqO4NH8aytJJX54ygB2VSgbl_MU6s9-tT3yD4/s640/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android.jpg" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i><br /></i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-configure-sign-in-with-google-android">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Yesterday I added the <a href="https://bendyworks.com/blog/a-month-of-flutter-fabulous-authentication" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">sign-in button</a>. Now let's make it do something.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
First I'll create a new <a href="https://firebase.google.com/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Firebase project</a> that will be used in development. Once I get ready to publish the app I'll create a production project.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMtFrI1UsKk56vOEXKYfxSOJcpETftzleqUBNoeZ-paNFQ-WSxdmWSEMq5OIka7UTIZD6X4NAXEo2-cbRaxIsrgCTlaPTozBqNbxLbTUyA3daCI8RQ8Y7MFbY95vCnMjoyoRgwonhLV0Y/s1600/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-create-project.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1343" data-original-width="1600" height="536" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMtFrI1UsKk56vOEXKYfxSOJcpETftzleqUBNoeZ-paNFQ-WSxdmWSEMq5OIka7UTIZD6X4NAXEo2-cbRaxIsrgCTlaPTozBqNbxLbTUyA3daCI8RQ8Y7MFbY95vCnMjoyoRgwonhLV0Y/s640/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-create-project.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Once the project is created, I'm going to enable Google as a sign-in provider for Firebase Auth. Enabling Google requires an app name and an email address. The email address can be a Google Group mailing list. I made sure the group is configured so that anyone can post but nobody can join and only members can read.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC1a_shOUXyDukXA7OROi6NnQTr5mB-fPlaC9K7QO7GitOQysT2VOrNf4fw4XI4aT_7vxjobhVkf7sZe1kL7jyJMgvks80ZbNvTJilrPfQcQNcnnIQomXdhoiQS9-MmS3DfHcSEF-qNic/s1600/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-enable-google-auth.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1343" data-original-width="1600" height="536" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC1a_shOUXyDukXA7OROi6NnQTr5mB-fPlaC9K7QO7GitOQysT2VOrNf4fw4XI4aT_7vxjobhVkf7sZe1kL7jyJMgvks80ZbNvTJilrPfQcQNcnnIQomXdhoiQS9-MmS3DfHcSEF-qNic/s640/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-enable-google-auth.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There are a number of alternatives to Google if Twitter or email/password is more appropriate for the app's target user.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg103Z05BA7Zmo-o2pKGaQ4jEQfNZ3MoSwS5IwqNByjrqpZ99Dl0kUF1zc0h8jwiDXzCJkEvIrVHeH7o0eIcjGJcyhpDdCaQORp57bvEQZVFujbce8GdfpqP-ftlQCmBVQWREtWPFgBsh4/s1600/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-enable-list-of-providers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1343" data-original-width="1600" height="536" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg103Z05BA7Zmo-o2pKGaQ4jEQfNZ3MoSwS5IwqNByjrqpZ99Dl0kUF1zc0h8jwiDXzCJkEvIrVHeH7o0eIcjGJcyhpDdCaQORp57bvEQZVFujbce8GdfpqP-ftlQCmBVQWREtWPFgBsh4/s640/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-enable-list-of-providers.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Within <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">android/app/build.gradle</code> I will replace the default <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">com.example.<name></code> <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">applicationId</code> with <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">app.birb</code>. An <a href="https://developer.android.com/studio/build/application-id.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">application ID</a>should be a domain that you own with the parts in reverse order.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Sign in with Google requires that <a href="https://developers.google.com/android/guides/client-auth" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">API clients be authenticated</a>. This basically means that you must use a certificate when accessing some Google APIs. Since the Birb app is currently using the development Firebase project, I will use the Android Studio <a href="https://developer.android.com/studio/publish/app-signing#debug-mode" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">debug certificate</a> now and generate a production certificate in the future.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
To get the debug certificate fingerprint, the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">keytool</code> program is used. This is installed with Android Studio but may not be available in your system path. I used <a href="https://flutter.io/docs/deployment/android#create-a-keystore" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">flutter doctor -v</code></a> to find where the Java bins were located.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight shell" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">$ </span>/usr/local/android-studio/jre/bin/keytool <span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">-list</span> <span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">-v</span> <span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">-alias</span> androiddebugkey <span class="nt" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">-keystore</span> ~/.android/debug.keystore
Enter keystore password:
Alias name: androiddebugkey
Creation date: Oct 22, 2018
Entry <span class="nb" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">type</span>: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: <span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">C</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>US, <span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">O</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>Android, <span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CN</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>Android Debug
Issuer: <span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">C</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>US, <span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">O</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>Android, <span class="nv" style="background: transparent; border: 0px; box-sizing: border-box; color: #cc6666; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CN</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>Android Debug
Serial number: 1
Valid from: Mon Oct 22 18:57:30 CDT 2018 <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">until</span>: Wed Oct 14 18:57:30 CDT 2048
Certificate fingerprints:
MD5: 32:B6:A3:75:EA:76:C7:AB:4A:A5:D4:48:AD:F3:09:52
SHA1: 0C:DC:5F:08:F0:45:EF:F0:7B:5C:CA:F2:76:52:CC:EA:16:3F:94:08
SHA256: 36:33:30:07:40:12:A4:30:2A:DD:9F:8C:FD:BE:92:62:F2:FB:C3:37:09:6F:DB:62:C9:60:7C:5E:8A:F8:21:59
Signature algorithm name: SHA1withRSA
Version: 1
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
With the SHA-1 fingerprint, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">0C:DC:5F:08:F0:45:EF:F0:7B:5C:CA:F2:76:52:CC:EA:16:3F:94:08</code>, at the ready, it's back to Firebase. I'll add an Android app to the project I created earlier. In the future I will also create an iOS app.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj31VEj5LYFKGEV-eKXWF0JglTC1XRLpNjPoaMViuI3ciPdkoFyrJ6WR2pclKzy_XjUfTWG0A9uD7l0bB60KUi1t816v3x-2x6nVuPX4DR-7maO9dtTmk69QjZHHPrq918K8jwgtOt2o_Y/s1600/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-add-android-app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1343" data-original-width="1600" height="536" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj31VEj5LYFKGEV-eKXWF0JglTC1XRLpNjPoaMViuI3ciPdkoFyrJ6WR2pclKzy_XjUfTWG0A9uD7l0bB60KUi1t816v3x-2x6nVuPX4DR-7maO9dtTmk69QjZHHPrq918K8jwgtOt2o_Y/s640/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-add-android-app.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
With the package name and fingerprint configured, Firebase will now prompt to download a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">google-services.json</code> file. This contains various Google Cloud and Firebase service details and should be put in the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">android/app</code> directory. There isn't any sensitive information in the file but for an open source project it will need to be different for every developer so I'm adding it to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">.gitignore</code>.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpNJwwcQQNj5S-mQSAqiVPtxQNf6WN1RAJ5_wU7BtZmwYt7GPjXfWFUjmuGfjbE-l5oB4kc8vn_63wN61BkyexP5QFRvni7ZyuN3lsGJicGG5e-xnoumdqMafZesD1-ocChBYBJq2kHZ8/s1600/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-download-google-services.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1343" data-original-width="1600" height="536" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpNJwwcQQNj5S-mQSAqiVPtxQNf6WN1RAJ5_wU7BtZmwYt7GPjXfWFUjmuGfjbE-l5oB4kc8vn_63wN61BkyexP5QFRvni7ZyuN3lsGJicGG5e-xnoumdqMafZesD1-ocChBYBJq2kHZ8/s640/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-download-google-services.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Now I'll add a couple of dependencies to the Android app and to Flutter.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6akkCAD0qfINlJK4DFg61Iq2fK-302YKXD7DbSN6TcioBnxLDvKD66H3Lt-YTU3cJfkqyDiFidEXwwzjrggk7Oa8PaEedFeqBhxtMN6EQvLUyuXLxGnALCzzjKX5f-O_ptRxch1645nQ/s1600/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-dependencies.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1343" data-original-width="1600" height="536" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6akkCAD0qfINlJK4DFg61Iq2fK-302YKXD7DbSN6TcioBnxLDvKD66H3Lt-YTU3cJfkqyDiFidEXwwzjrggk7Oa8PaEedFeqBhxtMN6EQvLUyuXLxGnALCzzjKX5f-O_ptRxch1645nQ/s640/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-dependencies.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">com.google.gms:google-services</code> gets added to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">android/build.gradle</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight gradle" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">buildscript</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dependencies</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Add this line</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">classpath</span> <span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'com.google.gms:google-services:4.2.0'</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">android/app/build.gradle</code> there are two additions.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight gradle" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dependencies</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Add this line</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">implementation</span> <span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'com.google.firebase:firebase-core:16.0.6'</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Add to the bottom of the file</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">apply</span> <span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">plugin:</span> <span class="s1" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'com.google.gms.google-services'</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pubspec.yaml</code> require the <a href="https://pub.dartlang.org/packages/google_sign_in" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">google_sign_in</code> package</a> and the <a href="https://pub.dartlang.org/packages/firebase_auth" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">firebase_auth</code> package</a>.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9YT5wvfmjLMSlW2R23fW247PyE53XUI0X38HXsOSecd1oR5XHjTDdOe6KQiGsdgHkXZEKZBKBpPiA42hyphenhyphen0hyWt4fou1-mqmEO_KmmJjC69YP9ZBog74CQWvPv0r7C1Oi8qipry648BvA/s1600/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-all-set.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1343" data-original-width="1600" height="536" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9YT5wvfmjLMSlW2R23fW247PyE53XUI0X38HXsOSecd1oR5XHjTDdOe6KQiGsdgHkXZEKZBKBpPiA42hyphenhyphen0hyWt4fou1-mqmEO_KmmJjC69YP9ZBog74CQWvPv0r7C1Oi8qipry648BvA/s640/2018-12-16-a-month-of-flutter-configure-sign-in-with-google-android-all-set.png" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Well the Sign in with Google button still doesn't do anything but maybe tomorrow it will.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/43" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#43 Configure Firebase Auth</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-88601805239391135822018-12-15T16:59:00.000-06:002018-12-15T16:59:05.007-06:00A month of Flutter: FABulous authentication<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX2B6QbAizjrehhEjbN9kQjVwPU9YTtNbioPz1_0d69Ts_1pG9ht4N7Qune8mpgoCDmL6b9Ovl0r4st2-bwZs4LEKhbe3SK8kLf2bziJ8OaHQ5anIHU9-2xRdXCiR2EQDgtzjpEg4qhHc/s1600/2018-12-15-a-month-of-flutter-fabulous-authentication.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="957" data-original-width="1440" height="424" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX2B6QbAizjrehhEjbN9kQjVwPU9YTtNbioPz1_0d69Ts_1pG9ht4N7Qune8mpgoCDmL6b9Ovl0r4st2-bwZs4LEKhbe3SK8kLf2bziJ8OaHQ5anIHU9-2xRdXCiR2EQDgtzjpEg4qhHc/s640/2018-12-15-a-month-of-flutter-fabulous-authentication.jpg" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-fabulous-authentication">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Wouldn't it be FABulous if users could sign in to the app? I agree. I'm planning on using <a href="https://firebase.google.com/docs/auth/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Firebase Authentication</a> via the <a href="https://pub.dartlang.org/packages/firebase_auth" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">firebase_auth</code> package</a> but today is all about that <a href="https://docs.flutter.io/flutter/material/FloatingActionButton-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">FAB</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This implementation is pretty simple. I'm going to create a new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">StatelessWidget</code> that uses an <a href="https://docs.flutter.io/flutter/material/FloatingActionButton/FloatingActionButton.extended.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">extended</a> FAB with a <a href="https://developers.google.com/identity/branding-guidelines" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">G logo</a> and text. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">onPressed</code> will kick off the authentication flow in the future, but for now it just prints that the FAB was tapped.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SignInFab</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">StatelessWidget</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SignInFab</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@override</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">build</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">FloatingActionButton</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extended</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">onPressed:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">print</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Tapped on sign in'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">icon:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Image</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">asset</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'assets/google_g_logo.png'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">height:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">24.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">label:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Sign in with Google'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The tests for <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SignInFab</code> simply check that the expected elements are still there.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In addition to adding <a href="https://docs.flutter.io/flutter/material/Scaffold/floatingActionButton.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">floatingActionButton</code></a> to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Scaffold</code> in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_MyHomePageState</code>, I'm also adding <a href="https://docs.flutter.io/flutter/material/ThemeData/accentColor.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">accentColor</code></a> to the theme. The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">accentColor</code> is usually complementary to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">primaryColor</code> but I want them both to be white for now. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">accentColor</code> will be used as the default background of FABs.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ThemeData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">brightness:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Brightness</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">light</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">primaryColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">white</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">accentColor:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Colors</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">white</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
And there it is, a nice Sign in with Google extended FAB.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDiO3fixPBtf4r0KYwu1K1Iy14TUj2Y4kVDSDMkUwRh5fGAN20LvXlxvDwXhu1NxfJ-Pg4_XkAgITptsz069DUVaZEZ2DQpvfYSUiRydTsIdGj7K-ki4JKnhnSHgSYq0KytXzOYklpPvI/s1600/2018-12-15-a-month-of-flutter-fabulous-authentication.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDiO3fixPBtf4r0KYwu1K1Iy14TUj2Y4kVDSDMkUwRh5fGAN20LvXlxvDwXhu1NxfJ-Pg4_XkAgITptsz069DUVaZEZ2DQpvfYSUiRydTsIdGj7K-ki4JKnhnSHgSYq0KytXzOYklpPvI/s640/2018-12-15-a-month-of-flutter-fabulous-authentication.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/40" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#40 Add Sign in with Google FAB</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-43704940015474525202018-12-14T14:46:00.000-06:002018-12-14T16:33:33.811-06:00A month of Flutter: rendering network images<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwNQxIJkdwnULQDg4Q4-XJ02BZ9_fQS41lNTizKV5-pQT-jWU8sdjAsgMEIcWt7OA1hUVR-PGdTdcyxOVS5-1o88BHft2Vu3Kip9c70U__7mPShJ8UWDKELSGHVngDU-mjYt2tIDvqj5w/s1600/2018-12-14-a-month-of-flutter-rendering-network-images.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwNQxIJkdwnULQDg4Q4-XJ02BZ9_fQS41lNTizKV5-pQT-jWU8sdjAsgMEIcWt7OA1hUVR-PGdTdcyxOVS5-1o88BHft2Vu3Kip9c70U__7mPShJ8UWDKELSGHVngDU-mjYt2tIDvqj5w/s640/2018-12-14-a-month-of-flutter-rendering-network-images.jpg" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-rendering-network-images">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
To finish off week two, I'm going to finally render some prim Unsplash birbs.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code> I'll use a <a href="https://docs.flutter.io/flutter/widgets/Column-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Column</code> widget</a> instead of the previous <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Card</code> widget. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Card</code> creates a nice boarder shape for your material but now I don't want any shadows to draw attention away from the images.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Column</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">crossAxisAlignment:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">CrossAxisAlignment</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">start</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">children:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>[</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ClipRRect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Image</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">network</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">imageUrl</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">borderRadius:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BorderRadius</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">circular</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">10.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SizedBox</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">height:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">8.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">username</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">style:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Theme</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">textTheme</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">headline</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SizedBox</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">height:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">8.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">style:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Theme</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">textTheme</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">body1</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Column</code>s are used to vertically arrange a number of widgets. In this case the image, the username, and the text. Along with those visible widgets there are also two <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">SizedBox</code>es. These simply add a little space between the widgets. <a href="https://docs.flutter.io/flutter/rendering/CrossAxisAlignment-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">CrossAxisAlignment.start</code></a> is used to left align the text.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The image is wrapped in a <a href="https://docs.flutter.io/flutter/widgets/ClipRRect-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ClipRRect</code> widget</a> with a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">borderRadious</code> to give it nice round corners. The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Text</code> widgets are using the <a href="https://flutter.io/docs/cookbook/design/themes" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">parent theme styling</a> so they will stay current with future theme changes.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This is only a basic implementation of rendering images but I've planned some future improvements like <a href="https://github.com/abraham/birb/issues/34" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">fading in</a> and <a href="https://github.com/abraham/birb/issues/35" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">on device caching</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
To add some space around all the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItems</code>, I'm updating <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code> to use a <a href="https://docs.flutter.io/flutter/widgets/Container-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Container</code> widget</a> with some padding. I'm not putting the padding inside <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code> because it's the parents responsibility to position <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code>s in relation to each other. <a href="https://docs.flutter.io/flutter/painting/EdgeInsets/EdgeInsets.fromLTRB.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">EdgeInsets.fromLTRB</code></a> will pad the left, top, right, and bottom edges respectively.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ListView</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">children:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">items</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Container</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">padding:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">EdgeInsets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fromLTRB</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">16.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">8.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">toList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
In the image URLs, I've told Unsplash to return images with a width of 400px. This is simply to avoid downloading multi-megabyte images in development. Once users are uploading images in Birb, there will be more control over image sizes.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Now these are some prim birbs.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh53md7FAqo0e1-3dxzZ_19rLz5HXBaC6LiwofHIs-05bPL6nnFsgc9xBaknznF3yWNwgRZI-qhCXokEPq1m-VC1Gyid0R58D1eLFodgCvHbmu4KArcKp8HOUbczV1kIOFUFIn93FJKdU4/s1600/2018-12-14-a-month-of-flutter-rendering-network-images.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh53md7FAqo0e1-3dxzZ_19rLz5HXBaC6LiwofHIs-05bPL6nnFsgc9xBaknznF3yWNwgRZI-qhCXokEPq1m-VC1Gyid0R58D1eLFodgCvHbmu4KArcKp8HOUbczV1kIOFUFIn93FJKdU4/s640/2018-12-14-a-month-of-flutter-rendering-network-images.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Flutter doesn't load images in tests, so those will have to be stubbed. There is an <a href="https://iirokrankka.com/2018/09/16/image-network-widget-tests/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">easy to follow guide</a> with instructions on using the <a href="https://pub.dartlang.org/packages/image_test_utils" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">image_test_utils</code>package</a> though.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/31" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#31 Render images and text</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-69828300095818746542018-12-13T19:43:00.001-06:002018-12-13T19:43:07.724-06:00A month of Flutter: real faker data<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_5GAqZfFtEGn9bQY9RhIeffs5prYR1_ZOhmymWKXqn4k2bTtETpYaYvyXPTbH66XDCKADYxDTWvOy8GSnlrlL0HyJNjGf9goH9QW4tq2uHoJ6V3y1flfyUwSUD95-lF1CzhbpxUIZLHo/s1600/2018-12-13-a-month-of-flutter-real-faker-data.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1002" data-original-width="1440" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_5GAqZfFtEGn9bQY9RhIeffs5prYR1_ZOhmymWKXqn4k2bTtETpYaYvyXPTbH66XDCKADYxDTWvOy8GSnlrlL0HyJNjGf9goH9QW4tq2uHoJ6V3y1flfyUwSUD95-lF1CzhbpxUIZLHo/s640/2018-12-13-a-month-of-flutter-real-faker-data.jpg" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-real-faker-data">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<a href="https://bendyworks.com/blog/a-month-of-flutter-stream-transforms-and-failing-tests" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Yesterday</a> I left the code base with failing tests because the fixture data stored in a JSON file <a href="https://github.com/flutter/flutter/issues/12999" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">can't be read in Flutter tests</a>. Today I'm going to complete the move to streamed mock data by switching from static fixtures to dynamic factories in a Dart file. The Unsplash image IDs will still be hard coded but the rest of the values will be dynamically generated.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The core of the work will be performed in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">mockPostData</code>. This will create a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Map</code> with a random <a href="https://en.wikipedia.org/wiki/Universally_unique_identifier" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">UUID</a> from the <a href="https://pub.dartlang.org/packages/uuid" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">uuid</code> package</a>, a random image ID from the pre-selected list, a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">DateTime</code>, and random <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">text</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">username</code> with the <a href="https://pub.dartlang.org/packages/faker" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">faker</code> package</a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I have added a day between each <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">DateTime</code> value, so if I generate three posts, they will be from today, yesterday, and two days ago, respectively.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">mockPostData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">index</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">})</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Faker</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">faker</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Faker</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">imageId</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">faker</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">randomGenerator</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">element</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">imageIds</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">createdAt</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">DateTime</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">now</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">subtract</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Duration</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">days:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">index</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">toIso8601String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>{</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'id'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Uuid</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">().</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">v4</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'imageUrl'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'https://source.unsplash.com/</span><span class="si" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">$imageId</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'createdAt'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">createdAt</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'text'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">faker</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">conference</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">name</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'username'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">faker</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">person</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">name</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">};</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There are also two helper methods, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">mockPost</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">mockPosts</code>, to wrap the raw data in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post</code> instances. Now it's just a matter of updating the tests and the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_loadPosts</code> function to use the new mock methods.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Using faker to generate mock data results in different names showing up.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCV7sOlO0vgmidAxel1TlSyk-NmBAJRs17yT0VvCbOfyK4TY5EE1KStzD_KTFp0errDc-1S8pbgEwjoLKmd3P4vVhxbcV6ya-1MYlWG_p3LUuAS8YonqLPYyaQreJGZtdBnWNLGNkzouc/s1600/2018-12-13-a-month-of-flutter-real-faker-data-screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCV7sOlO0vgmidAxel1TlSyk-NmBAJRs17yT0VvCbOfyK4TY5EE1KStzD_KTFp0errDc-1S8pbgEwjoLKmd3P4vVhxbcV6ya-1MYlWG_p3LUuAS8YonqLPYyaQreJGZtdBnWNLGNkzouc/s640/2018-12-13-a-month-of-flutter-real-faker-data-screenshot.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This is the base mock data rendering. Tomorrow starts the fun work of rendering the actual images.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/29" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#29 Turn mock posts into Stream</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-58851686758662290562018-12-12T21:20:00.000-06:002018-12-12T21:20:35.466-06:00A month of Flutter: Stream transforms and failing tests<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1WJZ3xOWI9uZkL37_P6OUgauG1k22ivP8peORxPGhuPt8C0CX7k5DMLzzpAYIOsZlCEiZZFHiDKXbvteDRxSyMJcLxVIvyKK0eoT_-Ag6SPnxAeoCHkFkZahHllozao2ehRY0D_XWdk0/s1600/2018-12-12-a-month-of-flutter-stream-transforms-and-failing-tests.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="956" data-original-width="1440" height="424" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1WJZ3xOWI9uZkL37_P6OUgauG1k22ivP8peORxPGhuPt8C0CX7k5DMLzzpAYIOsZlCEiZZFHiDKXbvteDRxSyMJcLxVIvyKK0eoT_-Ag6SPnxAeoCHkFkZahHllozao2ehRY0D_XWdk0/s640/2018-12-12-a-month-of-flutter-stream-transforms-and-failing-tests.jpg" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-stream-transforms-and-failing-tests">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Now that I've got a <a href="https://bendyworks.com/blog/a-month-of-flutter-post-model-and-mock-data" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Post model with mock data</a> and a <a href="https://bendyworks.com/blog/a-month-of-flutter-rendering-a-list-view-with-stream-builder" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">StreamBuilder for rendering</a>, it all needs to be wired together.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The main changes I'm making are in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_MyHomePageState</code> where I'm replacing the stream of <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">int</code>s with a call to the new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_loadPosts</code> method.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Stream</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_loadPosts</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">DefaultAssetBundle</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">loadString</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'assets/posts.json'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">then</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>>((</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">json</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">decode</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">value</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">))</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">asStream</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_convertToPosts</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_loadPosts</code> uses <a href="https://docs.flutter.io/flutter/widgets/DefaultAssetBundle/of.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">DefaultAssetBundle.of</code></a> to get the most appropriate <a href="https://docs.flutter.io/flutter/services/AssetBundle-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">AssetBundle</code></a> for loading files from the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">assets</code> directory.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Reading the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">String</code> contents of a file is asynchronous, after which the JSON contents can be decoded. The loading and decoding will happen as a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Future</code>but I want to be working on a stream so I'll use <a href="https://api.dartlang.org/stable/2.1.0/dart-async/Future/asStream.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">asStream</code></a> to convert the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Future</code> to a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Stream</code>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Finally the Stream will then get transformed using <a href="https://api.dartlang.org/stable/2.1.0/dart-async/Stream/map.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">map</code></a> and another new method <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_convertToPosts</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_convertToPosts</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">item</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fromMap</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">item</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">toList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Every time an event comes down the stream, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">map</code> will call the convert method on the value. In this case the value is a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">List</code> of items and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">List</code>`s <a href="https://api.dartlang.org/stable/2.1.0/dart-core/Iterable/map.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">map</code></a> will pass each item to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post.fromMap</code>. Note that <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">map</code> on a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">List</code> is different from <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">map</code> on a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Stream</code>. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">map</code> on a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">List</code> is lazy so we'll force it to execute with a final <a href="https://api.dartlang.org/stable/2.1.0/dart-core/Iterable/toList.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">toList</code></a>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The rest of the changes are going thought the code base and updating <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">List<int></code> types to be <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">List<Post></code> types and passing <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post</code> instances into the rendering <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code>s. I'll also replace the hard coded <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">'Prim Birb'</code> text with the dynamic <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">username</code> from the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post</code> instances.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBARdHq42T-97m7VBrz4YkrWrnscobOWbifw8ZyDJ948yPpagskK6LfAhy_3uSLPmtJ0sQpljWvJhCniN411N4nrn63MjaQ5yQv60gIAbE55dhl580_akcFlb5i0nytdx3MeRQlYsHmdE/s1600/2018-12-11-a-month-of-flutter-rendering-a-list-view-with-stream-builder-screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBARdHq42T-97m7VBrz4YkrWrnscobOWbifw8ZyDJ948yPpagskK6LfAhy_3uSLPmtJ0sQpljWvJhCniN411N4nrn63MjaQ5yQv60gIAbE55dhl580_akcFlb5i0nytdx3MeRQlYsHmdE/s640/2018-12-11-a-month-of-flutter-rendering-a-list-view-with-stream-builder-screenshot.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
As I was updating the tests to use the new mock JSON data, I kept running into failures. I was seeing tests timing out or the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code> error handling showing errors instead of content. After some digging it turns out that the code in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">testWidgets</code> <a href="https://github.com/flutter/flutter/issues/8490" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">can't access</a> files or assets. With <a href="https://bendyworks.com/blog/a-month-of-flutter-configuring-continuous-integration" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">CI configured</a> I can't merge code without passing tests so come back tomorrow to see how I fix them.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/29" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#29 Turn mock posts into Stream</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-36539427259108308622018-12-11T15:20:00.000-06:002018-12-11T15:20:13.677-06:00A month of Flutter: rendering a ListView with StreamBuilder<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAhFoHtGXFufhHVxjN_XgU3jt2-VtKWquk_lMY5WiVkcNnxxSey2JYF1XZSe6Qh04cpjft3BOJQVbYdtaehI5tDpmNHA7WVkVLq_PKO0NEkRBpzhAwZPlmBoArHjVtjtJ4NoptJs7ZvA/s1600/2018-12-11-a-month-of-flutter-rendering-a-list-view-with-stream-builder.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAhFoHtGXFufhHVxjN_XgU3jt2-VtKWquk_lMY5WiVkcNnxxSey2JYF1XZSe6Qh04cpjft3BOJQVbYdtaehI5tDpmNHA7WVkVLq_PKO0NEkRBpzhAwZPlmBoArHjVtjtJ4NoptJs7ZvA/s640/2018-12-11-a-month-of-flutter-rendering-a-list-view-with-stream-builder.jpg" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-rendering-a-list-view-with-stream-builder#">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The data for Birb will be stored in <a href="https://firebase.google.com/docs/firestore/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Firebase Cloud Firestore</a>. When looking at patterns to handle getting and rendering data, I decided to go with the <a href="https://docs.flutter.io/flutter/widgets/StreamBuilder-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">StreamBuilder</code></a> example from the <a href="https://pub.dartlang.org/packages/cloud_firestore" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">cloud_firestore</a> package documentation. I don't know how well pagination will work with this approach so that will be an experiment for another day.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The first change I'm making is turning the static <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">List<int></code> into a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Stream</code>, and moving it further up the widget tree. I want the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code> widget to only care about rendering items from a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Stream</code>, not how to create the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Stream</code>itself. This has the bonus of making it easier to mock data in the tests.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Stream</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_posts</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Stream</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>>.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fromIterable</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>>[</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">generate</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">10</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">i</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">i</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This looks a little weird but it is basically generating a list of 10 items. That <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">List</code> of 10 items is used as the first value in a new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Stream</code>. From the subscription side of the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Stream</code>, there will be a single event with data that is a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">List</code> of 10 items. I'm going with this pattern because Firestore will have snapshots with multiple documents.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code> <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">build</code> method needs to be updated to consume the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Stream</code> and use a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">StreamBuilder</code>:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@override</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">build</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">StreamBuilder</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>>(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">stream:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">posts</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">builder:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">AsyncSnapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">hasError</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Error: </span><span class="si" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">${snapshot.error}</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">switch</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">connectionState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">case</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ConnectionState</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">waiting</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Loading...'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">default</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">if</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">isEmpty</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">NoContent</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_itemList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">snapshot</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">},</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">StreamBuilder</code> takes a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Stream</code> and will then call the builder with an <a href="https://docs.flutter.io/flutter/widgets/AsyncSnapshot-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">AsyncSnapshot</code></a>. There are a couple of different states on this snapshot that need to be handled:</div>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">The first is checking to see if there has been an error. If there has been, render some error text.</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">Second, if the connection is waiting, show a loader while waiting for data to arrive.</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">Third, if there is no data, render the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">NoContent</code> widget.</li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">Finally if none of the previous cases are met, render the actual data.</li>
</ul>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Looking at the tests for <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostList</code>, all four of those scenarios are tested by creating different kinds of mock streams with the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_postsStream</code> helper.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Stream</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_postsStream</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">count</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Stream</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>>.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fromIterable</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>>[</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">generate</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">count</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">i</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">i</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Then I can test that the loading text is shown, followed a test that all the mocked items are rendered.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'renders list of PostItems'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Build our app and trigger a frame.</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MaterialApp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">home:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostsList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_postsStream</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">5</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Loading...'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pump</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Duration</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">zero</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsNWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">5</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
To simulate the error case, I can throw an error on a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Future</code> and convert that to a stream.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'renders NoContent widget'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Build our app and trigger a frame.</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MaterialApp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">home:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostsList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Future</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>>.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">error</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Bad Connection'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">asStream</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pump</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Duration</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">zero</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Error: Bad Connection'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
One other minor change I made was to reduce the height of the cards so I could be sure the additional cards were rendering.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKDPBh7XZRqtvioStjfNL4nQ4RSMcNuXfGcqR6jta3OtwwbXIUtH9JIUeaTnMfb_GvFZiRzqG_q9Q_VKscZKZ8d9F4jLGXQ77I38ZpEaBLRrwaH44w4_Z8KBPvvcGAfQ-dz1EVsxjZOLI/s1600/2018-12-11-a-month-of-flutter-rendering-a-list-view-with-stream-builder-screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKDPBh7XZRqtvioStjfNL4nQ4RSMcNuXfGcqR6jta3OtwwbXIUtH9JIUeaTnMfb_GvFZiRzqG_q9Q_VKscZKZ8d9F4jLGXQ77I38ZpEaBLRrwaH44w4_Z8KBPvvcGAfQ-dz1EVsxjZOLI/s640/2018-12-11-a-month-of-flutter-rendering-a-list-view-with-stream-builder-screenshot.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/25" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#25 Convert PostsList to use a StreamBuilder</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-50024111065011524502018-12-10T14:31:00.001-06:002018-12-11T15:20:36.596-06:00A month of Flutter: post model and mock data<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4F7_vUA1Sp8jkWnx9_kbhi8WJnwm4ZsZLvV5pbRtnoNEuS2pXrGvcdWIkkhZVHpLbq-1rFQsj2cK90PSt7pObk1WUJ-ZS7vijdr4iIaXtUy6k9cTOdgJjJx096jCCTT_oSAqpVYbNGjM/s1600/2018-12-10-a-month-of-flutter-post-model-and-mock-data.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4F7_vUA1Sp8jkWnx9_kbhi8WJnwm4ZsZLvV5pbRtnoNEuS2pXrGvcdWIkkhZVHpLbq-1rFQsj2cK90PSt7pObk1WUJ-ZS7vijdr4iIaXtUy6k9cTOdgJjJx096jCCTT_oSAqpVYbNGjM/s640/2018-12-10-a-month-of-flutter-post-model-and-mock-data.jpg" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-post-model-and-mock-data">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Now that there is a <a href="https://bendyworks.com/blog/a-month-of-flutter-a-list-of-posts" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">basic user interface</a>, I'm going to create some mock data to display in it. The mock data will be stored in a JSON file and will include just the basic fields needed right now: <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">id</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">createdAt</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">username</code>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">imageUrl</code>, and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">text</code>. For <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">imageUrl</code> I grabbed some random images from <a href="https://unsplash.com/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Unsplash</a>. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">text</code> is actually empty as I haven't decided what text to use in the mocks yet.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
This is a similar format to what you might expect from a JSON API. In the future there will probably be a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">User</code> object and maybe an <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Image</code> object that includes URLs to different sizes, etc.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight json" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">"id"</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">"7d3d8bd1-b9a6-4e1f-8e4e-dca6f4861441"</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">"imageUrl"</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">"https://source.unsplash.com/AEVAMhago-s"</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">"createdAt"</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">"2018-12-09T15:35:54.006Z"</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">"text"</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">""</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">"username"</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="s2" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">"woodstock"</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">]</span><span class="w" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">
</span></code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There are a <a href="https://flutter.io/docs/development/data-and-backend/json" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">number of ways</a> to consume JSON in Flutter, but for now I'm going with the simple <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">dart:convert</code> pattern with a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post</code> class.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">({</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">id</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">username</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">createdAt</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@required</span> <span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">this</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">imageUrl</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fromMap</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">id</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'id'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">username</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'username'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">createdAt</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">DateTime</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">parse</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'createdAt'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">]),</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'text'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">imageUrl</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'imageUrl'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">];</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">id</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">username</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">DateTime</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">createdAt</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">String</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">imageUrl</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I'm not a fan of optional values so I <a href="https://www.dartlang.org/guides/language/language-tour#optional-parameters" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">require everything</a>. This way I don't have to check if a property exists; I just have to check that the property has a value I can work with.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Along with the default constructor I'm also defining a <a href="https://www.dartlang.org/guides/language/language-tour#named-constructors" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">named constructor</a>, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">fromMap</code>, that uses an an <a href="https://www.dartlang.org/guides/language/language-tour#initializer-list" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">initializer list</a>. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">fromMap</code> takes in a Map of the raw data and translates it to class variables. Note that the JSON datetime string is being converted to a Dart <a href="https://api.dartlang.org/stable/dart-core/DateTime-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">DateTime</code></a> instance.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
One downside of this code is there isn't a defined format for what the raw JSON data contains. For example, if I remove <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">DateTime.parse</code> the linter will not complain and there will be a failure at runtime when the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">createdAt</code> string from the data tries to be set to the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">DateTime</code> type property in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post</code>. I have not yet found a way to define the key names and value types in a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Map</code>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
As the data model will change during development, it's important to make sure <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post</code> continues to work correctly. I will start with a pretty simple test. It loads the first mock data object, instantiates a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Post</code> instance, and asserts each value is available as expected. This is a plain Dart test (as opposed to a Flutter widget test) so I will have to add the Dart <a href="https://pub.dartlang.org/packages/test" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">test</code> package</a> to <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">dev_dependencies</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">group</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Post'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">test</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'fromMap'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">fromMap</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">postData</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">());</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">id</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'7d3d8bd1-b9a6-4e1f-8e4e-dca6f4861441'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">username</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'woodstock'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">imageUrl</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'https://source.unsplash.com/AEVAMhago-s'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">createdAt</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">DateTime</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">parse</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'2018-12-09T15:35:54.006Z'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">post</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">''</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There is a new helper function, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">postData</code>, that loads the JSON file, parses it, and returns the first object.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span> <span class="nf" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">postData</span><span class="p" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">final</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">dynamic</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">File</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'../assets/posts.json'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">readAsString</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">json</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">decode</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">data</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">first</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">;</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I've implemented the mock data in a JSON file instead of creating a List in Dart because that forces me to use the mock data in an asynchronous way. The real data will be async when pulled from Firestore so I am starting with that pattern now.</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/22" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#22 Add JSON file of mock posts</a></li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/21" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#23 Add Post model</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-82288049263973734582018-12-09T13:38:00.002-06:002018-12-09T13:38:29.017-06:00A month of Flutter: extract post item widget<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLDGFVipbv9hl-doEY6JFMXDtp5rb0l9bRXt1flixoQjAR5guSxxfFbo0aPnVcnmwzbgGmnemJs-VuylAAO1vu0je0xJzaBnUjfcVD-oDi3xnt-pIm4GxfWsdhFGdb1S5MVPwlVN3HFRs/s1600/2018-12-09-a-month-of-flutter-extract-post-item-widget.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="954" data-original-width="1440" height="424" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLDGFVipbv9hl-doEY6JFMXDtp5rb0l9bRXt1flixoQjAR5guSxxfFbo0aPnVcnmwzbgGmnemJs-VuylAAO1vu0je0xJzaBnUjfcVD-oDi3xnt-pIm4GxfWsdhFGdb1S5MVPwlVN3HFRs/s640/2018-12-09-a-month-of-flutter-extract-post-item-widget.jpg" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-extract-post-item-widget">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<a href="https://bendyworks.com/blog/a-month-of-flutter-a-list-of-posts" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Yesterday</a> I created the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostList</code> widget to display multiple posts at once. It contained the code for rendering both the list and the individual items. As the rendering logic for the individual items is going to get more complex, I'm going to extract the item rendering code into a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code> widget.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
There aren't any feature changes in this refactor, but the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code> lays the groundwork for adding the code to render the image, name, date, etc. That complexity should be contained within this new widget.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">StatelessWidget</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@override</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">build</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Card</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Container</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">height:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">300.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Center</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Prim Birb'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
One of the issues I see in some flutter tutorials is having widgets that are overly complex. Widgets that contain to much functionality are hard to read and test, and should be broken up into smaller widgets.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The code for <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code> is now much more concise:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostsList</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">StatelessWidget</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostsList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">static</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_items</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>[</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">];</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@override</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">build</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ListView</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">children:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_itemList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">());</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_itemList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_items</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">index</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=></span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">()).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">toList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Separating the code into multiple widgets makes unit testing easier. Tests for how a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code> renders content can be contained within <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">post_item_test.dart</code> and <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">posts_list_test.dart</code> only has to test that <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItems</code> are rendered.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Tests for <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostItem</code>:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Renders a post'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Build our app and trigger a frame.</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MaterialApp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">home:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Card</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Prim Birb'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsOneWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Tests for <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code>:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Renders list of posts'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Build our app and trigger a frame.</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MaterialApp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">home:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostsList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostItem</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsNWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/19" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#19 Add PostItem widget</a></li>
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/21" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#21 Refactor PostItem list method</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-73435995512003945202018-12-08T15:33:00.000-06:002018-12-08T15:33:21.233-06:00A month of Flutter: a list of posts<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvfFXdakxDkdKb9B_uxK5VWY0U5K-COIyb3MIqK9TWQg7_KgBnbOqWwchMZ2swq4R61xEN25aMVJuBJ8SStm_KHkc7givG3dTHz_w1qMCOh_5gs0283bjFBdL7d0ZYfH5rLlMyPfWFJ68/s1600/2018-12-08-a-month-of-flutter-a-list-of-posts.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvfFXdakxDkdKb9B_uxK5VWY0U5K-COIyb3MIqK9TWQg7_KgBnbOqWwchMZ2swq4R61xEN25aMVJuBJ8SStm_KHkc7givG3dTHz_w1qMCOh_5gs0283bjFBdL7d0ZYfH5rLlMyPfWFJ68/s640/2018-12-08-a-month-of-flutter-a-list-of-posts.jpg" width="640" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i><br /></i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally posted on <a href="https://bendyworks.com/blog/a-month-of-flutter-a-list-of-posts">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<a href="https://bendyworks.com/blog/a-month-of-flutter-no-content-widget" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Yesterday</a> I created a widget to display when there are no images available. Today I'm going to create the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code> widget that will be displayed when there are images.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The widget will use a <a href="https://docs.flutter.io/flutter/widgets/ListView-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">ListView</code></a>, in part because I plan to use <a href="https://firebase.google.com/docs/firestore/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">Firebase Cloud Firestore</a> as a datastore and that's the pattern <a href="https://pub.dartlang.org/packages/cloud_firestore" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">cloud_firestore</a> uses.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
For now I'm going to replace the hardcoded <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">NoContent</code> widget with the new <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code>. <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">NoContent</code> will temporarily go unused until <a href="https://github.com/abraham/birb/issues/13" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#13 load sample data and render homepage list items</a> is implemented.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
For this initial list I'm going to iterate over a finite list and create a static Material <a href="https://docs.flutter.io/flutter/material/Card-class.html" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Card</code></a> for each list item. The card will have a fixed height and some simple <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Text</code>.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostsList</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">StatelessWidget</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostsList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">static</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">List</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_items</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>[</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">];</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@override</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">build</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">ListView</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">children:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">_items</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">map</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">((</span><span class="kt" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">int</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">index</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Card</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Container</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">height:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">300.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Center</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Prim Birb'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">toList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">());</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
I'll also create a simple test to make sure that <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">PostsList</code> renders two <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Card</code>widgets and the expected text. You might notice that the test checks for two of each while the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">_items</code> implementation should actually render three cards. But the screen size is not large enough to display all three cards so one of them is offscreen. When testing I only care about what's rendered to the user.</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">testWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Renders list of posts'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">WidgetTester</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">async</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="c1" style="background: transparent; border: 0px; box-sizing: border-box; color: #969896; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">// Build our app and trigger a frame.</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">await</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">tester</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">pumpWidget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MaterialApp</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">home:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">PostsList</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">byType</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Card</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsNWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">expect</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">find</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'Prim Birb'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">findsNWidgets</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="mi" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">));</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">});</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The result is a simple list of cards:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9x_9rHwY4Zqr4gI2_Xx4q4G_86Nz7ELUVlK7CUgheX1gI1DVOqx0WYYMFskxKYLvKHetfRVN5E8lQey95TU2RBWiuX65oC1R0qW8XELJu82zJsRC82NDzbqv8whjKBxUjw5o6BvpPQSU/s1600/2018-12-08-a-month-of-flutter-a-list-of-posts-screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9x_9rHwY4Zqr4gI2_Xx4q4G_86Nz7ELUVlK7CUgheX1gI1DVOqx0WYYMFskxKYLvKHetfRVN5E8lQey95TU2RBWiuX65oC1R0qW8XELJu82zJsRC82NDzbqv8whjKBxUjw5o6BvpPQSU/s640/2018-12-08-a-month-of-flutter-a-list-of-posts-screenshot.png" width="360" /></a></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<br /></div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/18" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#18 Add PostsList widget</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0tag:blogger.com,1999:blog-5923972019140851567.post-77721071151395583462018-12-07T21:40:00.003-06:002018-12-07T21:41:46.351-06:00A month of Flutter: no content widget<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisC3vnredEpDjRkmVeIkMJggap_dUjnaRXCwZM1i9zUaHMvxp4ENwavBzB_PzjpVooE_otSi8FOFkmZ4C9HfUNG1mg4AcKvwDKJ6dSb3T_-BkRzijBX4FtZAxs68Qt3MvQuCODY-A2Gy4/s1600/2018-12-07-a-month-of-flutter-no-content-widget.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1440" height="426" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisC3vnredEpDjRkmVeIkMJggap_dUjnaRXCwZM1i9zUaHMvxp4ENwavBzB_PzjpVooE_otSi8FOFkmZ4C9HfUNG1mg4AcKvwDKJ6dSb3T_-BkRzijBX4FtZAxs68Qt3MvQuCODY-A2Gy4/s640/2018-12-07-a-month-of-flutter-no-content-widget.jpg" width="640" /></a></div>
<figure class="featured-image" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;"><br /></figure><br />
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<i>Originally published on <a href="https://bendyworks.com/blog/a-month-of-flutter-no-content-widget">bendyworks.com</a>.</i></div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
With any sort of content site, there is always a chance of having nothing to display. So let's create a <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">NoContent</code> widget to use in that scenario.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
For this view I'm using an illustration from the <a href="https://undraw.co/" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">amazing unDraw site</a>. I've choosen the SVG version as it's small, scales to any device size, and is easy to change the color of if themes are implemented.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Since it's an SVG, it'll require the <a href="https://pub.dartlang.org/packages/flutter_svg" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">flutter_svg package</a> to render. Packages are easy enough to <a href="https://flutter.io/docs/development/packages-and-plugins/using-packages#adding-a-package-dependency-to-an-app" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">add as dependencies</a> to your app. The SVG file will also need to be added to an <a href="https://flutter.io/docs/development/ui/assets-and-images" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">assets directory</a> and included in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">pubspec.yaml</code>.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Then a new file, <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">no_content.dart</code>, will be created with the following <a href="https://www.youtube.com/watch?v=wE7khGHVkYY" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">StatelessWidget</code></a> definition:</div>
<div class="highlight" style="background: rgb(29, 31, 33); border: 0px; box-sizing: border-box; color: #c5c8c6; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; margin: 0px; padding: 0px; vertical-align: baseline;">
<pre class="highlight dart" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.5rem; border: 0px; box-sizing: border-box; font-family: monospace, sans-serif; margin-bottom: 1.5rem; overflow-wrap: break-word; padding: 2rem; vertical-align: baseline; white-space: pre-wrap;"><code style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px solid rgb(223, 223, 223); box-sizing: border-box; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">class</span> <span class="nc" style="background: transparent; border: 0px; box-sizing: border-box; color: #f0c674; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">NoContent</span> <span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">extends</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">StatelessWidget</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">NoContent</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">();</span>
<span class="nd" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">@override</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">build</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">BuildContext</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">{</span>
<span class="k" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">return</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Container</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">width:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MediaQuery</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">of</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">context</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">).</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">size</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">width</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">child:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Column</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">mainAxisAlignment:</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">MainAxisAlignment</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">center</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">children:</span> <span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;"><</span><span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Widget</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">>[</span>
<span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">SvgPicture</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="na" style="background: transparent; border: 0px; box-sizing: border-box; color: #81a2be; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">asset</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>
<span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'assets/undraw_a_day_at_the_park_owg1.svg'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="nl" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">height:</span> <span class="mf" style="background: transparent; border: 0px; box-sizing: border-box; color: #de935f; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">300.0</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">,</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="kd" style="background: transparent; border: 0px; box-sizing: border-box; color: #b294bb; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">const</span> <span class="n" style="background: transparent; border: 0px; box-sizing: border-box; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">Text</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="s" style="background: transparent; border: 0px; box-sizing: border-box; color: #b5bd68; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">'No Birbs a birbing'</span><span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">],</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">),</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">);</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
<span class="o" style="background: transparent; border: 0px; box-sizing: border-box; color: #8abeb7; font-family: , "blinkmacsystemfont" , "segoe ui" , "roboto" , , "ubuntu" , "cantarell" , "helvetica neue" , sans-serif; margin: 0px; padding: 0px; vertical-align: baseline;">}</span>
</code></pre>
</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
The main goal here is to render the SVG with some text underneath it. Since nothing in <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">NoContent</code> is going to change, let's give it a <a href="https://medium.com/dartlang/an-intro-to-immutability-with-dart-d4de871865c7" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;"><code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">const</code> constructor</a>. We'll also make it so the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Column</code> contents are center aligned vertically and that the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Container</code> takes up the entire view width.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
With <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">NoContent</code> implemented, we'll just swap it into the <code style="background: rgb(248, 248, 248); border: 1px solid rgb(223, 223, 223); box-sizing: border-box; color: #333333; font-family: Consolas, "Liberation Mono", Courier, monospace; margin: 0px; padding: 0.125rem 0.3125rem 0.0625rem; vertical-align: baseline;">Scaffold</code> body for rendering and update the tests accordingly.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
Here is the result. The size and spacing of everything will have to be adjusted as the app design evolves but this is a good base implementation.</div>
<div style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; margin-bottom: 1.25rem; padding: 0px; text-rendering: optimizelegibility; vertical-align: baseline;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPauAn6zHmyp3c67BILhlKtijpqEmrK3m2FvdqPs70OKsNAElylM6MLSc6yMsyizGHFLoBueFL-DuXxXD_dh_qR7Ca03zLI9FKTkfcQ-MBOPXUuSryTV7GgFGGU36yoUGSAYsv19XdH2s/s1600/2018-12-07-a-month-of-flutter-no-content-widget-screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPauAn6zHmyp3c67BILhlKtijpqEmrK3m2FvdqPs70OKsNAElylM6MLSc6yMsyizGHFLoBueFL-DuXxXD_dh_qR7Ca03zLI9FKTkfcQ-MBOPXUuSryTV7GgFGGU36yoUGSAYsv19XdH2s/s640/2018-12-07-a-month-of-flutter-no-content-widget-screenshot.png" width="360" /></a></div>
<br /></div>
<h2 id="code-changes" style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; color: #222222; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1.8rem; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 1.75rem 0px 0.25rem; text-rendering: optimizelegibility; vertical-align: baseline;">
Code changes</h2>
<ul style="background: rgb(255, 255, 255); border: 0px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 18px; line-height: 1.75rem; list-style-image: initial; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px; vertical-align: baseline;">
<li style="background: transparent; border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="https://github.com/abraham/birb/pull/17" style="background: transparent; box-sizing: border-box; color: #00b6df; line-height: inherit; margin: 0px; padding: 0px; text-decoration-line: none; vertical-align: baseline;">#17 Create NoContent widget</a></li>
</ul>
Abraham Williamshttp://www.blogger.com/profile/01392328206399007226noreply@blogger.com0