I taught myself Flutter to build my first game. No idea if I did it "right" but it works, here's what happened

A year ago I had never written a line of code. Now I've got a small puzzle game built in Flutter sitting in TestFlight. I'm not going to pretend I know the "correct" way to structure a Flutter app, because I genuinely don't. But it works, people can play it, and honestly I think that matters more than getting every architectural decision textbook-perfect, especially if you're learning from zero like I was.

The game

It's based on a board game a friend designed using wooden cubes. Plays a bit like Connect 4 meets dominoes, you place cubes on a grid and try to build lines while blocking your opponent. Simple enough on paper, but turned out to involve more decisions than I expected once I actually had to code the rules.

State management

I used Provider and ChangeNotifier because that's what most tutorials pointed me to early on. I see a lot of posts in this sub debating Bloc vs Riverpod vs Provider vs whatever else, and I want to gently push back on letting that intimidate you if you're just starting out. I picked one, stuck with it, and it's been fine. Probably not optimal. Definitely caused me some headaches (I had providers that didn't have the data they needed until further down the widget tree than I expected, took me ages to even understand why), but I worked around it and moved on rather than rebuilding everything from scratch chasing a "better" pattern.

On using AI tools

Worth mentioning, since it's relevant to how I actually learned this. For the first nine months or so I built everything without any AI help. I think that turned out to be important. It meant I actually had to sit with the confusion, work through docs, and slowly build up a real understanding of how Flutter and Dart fit together, rather than just getting handed answers.

I only started using something like Claude more recently, mostly for bits I genuinely couldn't figure out, or to sanity-check things I'd already built. By that point I had enough foundational knowledge to actually tell whether what it suggested made sense for my app, rather than just copying and pasting blind.

If I was starting fresh today, I think it would be really hard to resist using AI for everything from the start. And I get why people do, it's faster. But I suspect you'd end up with a working app and a much shakier understanding of why any of it works, which probably catches up with you eventually when something breaks and you don't know where to even start looking.

The actual lesson

I think there's a version of learning to code where you get stuck trying to find the "right" way to do everything before you let yourself build anything, and you never actually finish something. I'd rather have a working app built on slightly questionable foundations than a perfectly architected app that doesn't exist. If you're earlier in your Flutter journey and feel behind because your code isn't clean, you're probably doing fine.

Curious what people here actually think though. Does state management choice matter as much as this sub sometimes makes it feel, or is "pick one and move on" genuinely fine for smaller apps? And on the AI side, do people think it's an issue if someone leans on it from day one rather than building the foundation first like I did? Or is that just gatekeeping at this point?

reddit.com
u/sigummer — 10 days ago
▲ 18 r/digitaltabletop+9 crossposts

CubeRoots Ivy - A tactical puzzle game, think Connect 4 meets dominoes with a strategic twist

Hi, we're a two-person team, based in the UK, and we're getting closer to finishing our very first game.

A bit of backstory: back in 2020 my friend Eddy decided to design a board game. He had a set of wooden cubes made, started working out the rules, and CubeRoots was born. He's been refining it ever since, and roping the rest of us into playtesting along the way.

A couple of years later I looked at one of his games, Ivy, and thought it would make a great app. However I'd never built a mobile game like this before with only a limited knowledge of code. So I spent the next year teaching myself, through a lot of late nights, tutorials, and trial and error.

Ivy plays a bit like Connect 4 meets dominoes. You place coloured cubes onto a grid, try to line yours up into "vines," and block your opponent from doing the same. Bigger vines mean bigger rewards, but every move is a trade-off between building your own line and shutting theirs down. Hopefully it's fun and challenging but fairly intuitive to pick up. We think it's a game mechanism that hasn't been seen before

We'd genuinely appreciate any feedback if you give it a go.

testflight.apple.com
u/sigummer — 9 days ago