One of the great things about Github Actions is how easily it lets you setup continuous integration testing for your flutter applications. In this post we’ll go through the basic implementation of a CI workflow in flutter.
Continue reading →Category / Code
Flutter: Introducing `RoutedWidgetSwitcher`
We’ve recently released a new package for use with all “Nav 2” implementations, called routed_widget_switcher
: https://pub.dev/packages/routed_widget_switcher
It allows you to declaratively switch child widgets based on the current Router
location:
class SideBar extends StatelessWidget { Widget build(_){ return RoutedSwitcher( builders: (info) => [ Routed('*', MainMenu.new), Routed('/dashboard', DashboardMenu.new), Routed('/settings', SettingsMenu.new), ]); } }Continue reading →
Flutter: Adding (scalable) state management to the new `skeleton` template
Recently we took a deep dive into the new skeleton
template included in the Flutter SDK. As noted in the article, one of the big missing pieces in the template is a scalable state management solution with dependency injection and data-binding.
Given that, we thought it would be informative to convert it to use a couple of popular state management libraries, specifically riverpod
and GetItMixin
.
Flutter: A Skeleton App w/ GetIt + GetItMixin
Recently we compared and contrasted some common state management packages. And while app architecture was not the focus of the article, we received some feedback that the examples were too simple to give a good picture of how the approaches would scale. In this post we’ll attempt to address that concern by building a simple yet scalable skeleton app using GetIt
and GetItMixin
!
Get What?
If you’re not familiar with GetIt
, it is a robust implementation of the classic service locator pattern, which allows you to register objects by their type and then look them up from anywhere in the app. Recently it gained a sibling package named GetItMixin
which provides reactive widget binding hooks. Combined these two packages make up one of the simplest and cleanest methods of managing state within a Flutter application. Let’s take a look!
NOTE: To follow along, the full demo is posted here:
https://github.com/esDotDev/flutter_experiments/tree/master/get_it_skeleton_app
Flutter: Comparing GetIt, Provider and Riverpod
Today we’re going to look at 3 of the more popular libraries for basic state management in Flutter: GetIt
, Provider
and riverpod
.
For each of the libraries, we’ll look at how you can perform data-binding, data-injection, and how you might mock them for testing. To follow along with the examples below, check out the code on github.
Continue reading →Flutter: Deep dive into the new `skeleton` app template
For many years Flutter has provided the basic “Counter App” each time you created a new project. While that example provides a nice introduction to the foundational concepts of StatefulWidget
and basic font/asset management, it does not really resemble the structure of a “complete app”. This has left developers without guidance for anything beyond a basic single page app.
Flutter: Hit-test outside parent bounds with `DeferPointer`
One thing that has always felt a little limiting in Flutter for us has been its inability to perform hit-testing for a button or gesture detector that is outside the parents bounds. This has been a popular issue in the Flutter bug-base over the years, getting something around 150+ upvotes if you add up all incarnations of the issue.
Continue reading →Flutter: Keyboard Shortcuts, the easy way!
In a previous post we looked at a method for binding directly to the keyboard. While this is handy for quick spikes, or truly global listeners, it is a little dangerous as it is easy to forget to remove these listeners. In this post we’ll look at a couple of different ways to do this a little more safely.
Continue reading →