RssBook for Surface Duo — yet another Flutter dual screen sample app
Read your RSS feed like it would be an ebook — A sample Android app written in Google’s Flutter that demonstrates the unique features of a Surface Duo.
Read your RSS feed like it would be an eBook — A sample Android app written in Google’s Flutter that demonstrates the unique features of a Surface Duo.
After playing around with my simple hinge read-out sample app (GitHub), I want to go a step further and develop a near production-ready application for the Surface Duo using Google’s Flutter — on an M1 Mac mini to have all the Holy Trinity of tech giants.
Nevertheless, I’m an experienced software engineer but my skillset neither exists Flutter nor in Android development in general. But I’m highly interested in maybe the next evolution of our mobile tech word aka dual screen devices.
That’s why this RssBook (GitHub) was born. It will be never production ready or copy-and-paste worthy — but I made fun, and I learned a lot about Dart and the ecosystem behind Flutter.
Dual screen device development prior Flutters foldable support has been merged
At the moment where this blog was post was written, Flutter does not support foldables out of the box, that’s why you have (at least) two options. First, you can use the offical Getting started guide from Microsoft to embed the Surface Duo SDK into your app bundle and do some Kotlin behind the scenes stuff, or secondly, you use a package that handles all of them for you — with some caveats, of course.
After using the first approach in my Flutter hinge sample, I decided to use the second way to embed the dual screen SDK. Therefore, I used the pub.dev package ‘multiple_screens’ in my pubspec.yaml file.
This is very convenient because you as a developer, you do not have to copy files or write Kotlin source. The downside of this package is, that it seems it is no longer maintained and does not support Flutter 2.0’s nullable — which is a real bummer.
This and other reasons let me wish, that Google merges Microsoft’s PR as fast as possible into an upcoming version of Flutter.
A lot of the following challenges are caused by the matter of fact that I’m a newbie to all of the technology I used in this sample app.
A dual screen app seems to be a lot more dependent on a working rebuild feature of the app’s user interface. If you span an app across both screen or “shrink” it back to just one screen required a lot of on the fly adjustments of the widget tree.
More than the actual development challenges are the user interface one. An app has to work on “small” Android devices, but also on a large screen of a Surface Duo and also on two of the Duo’s screens.
Another challenge was to realize, that my idea does not work on modern RSS feeds.
My first idea writing a “eBook-ish RSS reader” with page curl effect would not be useable due to the lack of text content. Most of the blogs are only providing an abstract instead of the whole article.
It was great to see how fast you can prototype an app using Flutter — and to optimize it for dual screen devices using the provides SDK or embedding external dependencies.
That’s said, there is room for improvement and I think that the upcoming Flutter version that embeds the foldable support will power up app development for Surface Duo or equal designed devices.