shawn.blais

Shawn has worked as programmer and product designer for over 20 years, shipping several games on Steam and Playstation and dozens of apps on mobile. He has extensive programming experience with Dart, C#, ActionScript, SQL, PHP and Javascript and a deep proficiency with motion graphics and UX design. Shawn is currently the Technical Director for gskinner.

@tree_fortress

Flutter Vignettes updated to Dart 3.x

We’re happy to announce that the Flutter Vignettes have been updated to Dart 3.x and Flutter 3.19! This will allow developers to more easily build the Vignettes and port the relevant source code to their own projects.

If you’ve forgotten what the Vignettes are (or never knew about them in the first place!) you can check out our micro-site or view the video below as a refresher. In short: they are a collection of micro-experiments that attempt to push the boundaries of what is visually possible in Flutter. Their purpose is to inspire designers and developers to push their Flutter apps to the next level.

Continue reading →

Flutter: Crafting a great experience for screen readers

While building the Wonderous app, we wanted to craft a great experience for visually impaired users using screen readers. Flutter does an admirable job working with these systems out of the box, but app developers also have work to do to create a polished user experience.

In this post we’ll look at how screen readers work and then run through the top accessibility related lessons we learned along the way.

Continue reading →

Flutter: Introducing `url_router` – A simpler Router controller.

When it comes to implementing a url-based Router (aka Nav2) there are really 2 high-level components to the API:

  • A controller to read/write to the current url
  • A parsing/matching system to convert a url into a stack of views, or pages.

The interesting thing here, is that the controller portion, is a fairly stable, boring API. Reading or writing the url location, or accessing queryParams is all pretty straight-forward. Really all you are doing here is setting a string value, and parsing query params using the URI class.

Continue reading →