Devblog 3: Looking ahead

Search for a command to run...

No comments yet. Be the first to comment.
Follow my journey of developing Local Explorer, an app that allows people to create and play position-based games!
The app will initially support one type of geo-game, which will be a scavenger hunt. Users of the app will be able to create and play these with the app. Last time I've explored the tech that I thought I would need to be able to create this. You can ...
As Flutter developers, we love the efficiency of writing code once and deploying it everywhere. But when it comes to the very final step of launching or updating an app, generating App Store and Play

If you're looking for a streamlined way to distribute your Android test builds using Firebase App Distribution (FAD) with the modern Android App Bundle (.aab) format, you might want to pause. While the promise of using AABs via FAD—leveraging the Goo...

Last month, I set myself a new challenge: to build and release a small app from scratch within a month. This decision came after a realization I had while working on my previous project. That project had so many uncertainties and things left to do th...

Using Flutter's CustomPaint to create futuristic looking widgets.

Last year, I wrote two articles about theming in Flutter, sharing my frustrations with ThemeData (part 1 & part 2). While ThemeData is powerful, its extensive properties can be overwhelming, especially when many of them are rarely used. After experim...

Hi! Welcome back, glad you could make it.
Last two weeks I've spend time building as well as thinking about the project. My goal was to make a playable scavenger hunt. I achieved this but I also started thinking about other aspects of the app.
I love to share my result, and thoughts with you below!
My main focus for this project is getting to a working prototype ASAP. So in order to do that, I would at least be needing a way to play a scavenger hunt, right?
So what I've done is create a hardcoded scavenger hunt within the app, I don't have a backend yet, heck, I don't even store data locally. The idea is that I can just play this scavenger hunt to try it out to see how the flow should be.
The scavenger hunt is a basically just alternating between finding the next location, with the 'tool'.

Then answering the question for that location.

When you've answered the last location, you will get an overview of your score.

That's it for now. And it works!
So while I was working on the app, I got a bit annoyed with the default theme. I know this doesn't have priority right now, but the app shouldn’t have to look like 💩 right?
Soon I realized I was spending too much time without getting anywhere close to what I envisioned. So I turned to Twitter:
I've gotten so many great suggestions! Some of you are simply in a relationship with a designer (or helped them become one).

I've decided to just give it some color with the help of flex_color_scheme. Once the MVP is 'done' I can take a more serious look into branding, probably getting someone else to do it for me.
In the last couple of weeks I've also been thinking about other aspects of the app.
As I've mentioned in a previous blog post, I'm using my own solution for state management. My solution takes some inspiration from redux. The main resemblance is that it has a single source of truth.
But then I hit a bit of a wall. See, Flutter is declarative, right? This is often expressed as UI = F(S), meaning the UI is a function of the state. But when it comes to navigating a Flutter app, this often is not the case.
You'd often tell a Navigator to go somewhere, like with Navigator.push. At least, that's what I'm used to do. Well actually I use go_router most of the time but that I use pretty similar, with GoRouter.go.
To me, that sounds not really declarative, the navigation state is independent from the app state.
When I use bloc I don't really have an issue with it. When using Bloc's or Cubits you don't maintain a single source of truth in the way Redux and my own solution do. When you navigate to some page, that page will create/provide the state. So that's a bit the other way around. Now the UI determines which state objects (Blocs/Cubits) should be there.
Now what I would like to see with my solution, is that instead of telling my app to navigate to some other page, I update the state, and based on the state change, the correct screen should be shown.
The difference:
// Calling Navigator
onTap: () => Navigator.push(DetailScreen(itemId: 1)),
// Updating state
// (dispatch emits an event which will be processed to update the state)
onTap: () => dispatch(SelectItem(id: 1)),
I had a nice conversation with someone on Twitter that gave me some hints to how I could do this, so I definitely want to try this out in the upcoming weeks.
Some time ago I've decided that I only want to create pet projects that at least have some potential for generating income. My puzzle game shared the same intention. I eventually released it for free as a web app instead of a mobile app, but I had plans for monetization.
For this app it is no different. From the start I had an idea about how to monetize this app. My ideas changed a little the last couple of weeks, but not by much. I will share more about this later when I get to implementing it.
For the next couple of weeks I want to take a look into the declarative way of navigation and also make a start with adding firebase.
The current scavenger hunt is hard-coded inside the app, so a good first step would be to get this from firebase. Then I can also start working on authentication and saving user progression. It has been a while since I worked with firebase other than analytics/crashlytics but I've had good experiences with it in a previous pet project. It's gonna be fun!
See you next time!