Jonathan Simon's Avatar

Jonathan Simon

@jsimon.dev

✦ Flutter Developer ✦ Passionate about technology, science and philosophy. πŸ‡¨πŸ‡Ί in πŸ‡©πŸ‡΄ Portfolio: https://jsimon.dev Github: https://github.com/JSimonDev

90
Followers
146
Following
46
Posts
04.11.2024
Joined
Posts Following

Latest posts by Jonathan Simon @jsimon.dev

Video thumbnail

What’s stopping you from coding like this?

01.01.2026 19:59 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Do you have a 'before vs after' example or a playground project?

It would be great to visualize how the build scope shrinks with this pattern compared to the traditional cascading rebuilds

31.12.2025 19:45 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Ah, I see. Using enums as const tokens keeps the widget tree structure immutable, while the context resolves the actual value only at the leaf nodes.

It aligns perfectly with the Strategy concept: separating the const token from the runtime resolution. It sounds like a robust optimization

31.12.2025 19:45 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Interesting take on Figma tokens β†’ const fields.

But how does this handle runtime theming (Dark/Light/Custom)? Wouldn't swapping the active constant set still force a full tree rebuild, or is there a specific pattern to optimize that?

31.12.2025 18:21 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

Looks clean on mobile too!

31.12.2025 16:12 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Sometimes we get obsessed with learning the latest framework features and forget that fundamental Software Engineering concepts (like Design Patterns) run the show under the hood.

Understanding the pattern = Understanding the tool. πŸ› οΈ

#FlutterDev #SoftwareEngineering #Dart #DesignPatterns

31.12.2025 14:57 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

This explains exactly why Widgets must be final and immutable.

In the Strategy Pattern, you often don't mutate the active strategy; you simply replace it with a new one to change behavior.

Flutter does exactly this: it swaps the Strategy (Widget) to update the UI state.

31.12.2025 14:57 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

The Element (Context) acts as a generic container, it doesn't know how to paint or layout on its own.

In every build() method, we (the Client) pass a NEW "Strategy" (a new Widget) to the Context.

"Here Element, this is your new configuration. Run it."

31.12.2025 14:57 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image Post image

If we map this directly to Flutter's internal architecture, it fits perfectly:

1️⃣ The Context: It represents the Element (accessed via BuildContext). It persists in the tree.

2️⃣ The Strategy: It represents the Widget. It is the immutable configuration of "how" something should behave or look.

31.12.2025 14:57 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

I was reading the definition of "Context" in the Strategy Pattern and found this:

"The context isn’t responsible for selecting an appropriate algorithm... the client passes the desired strategy to the context. In fact, the context doesn’t know much about strategies."

Sound familiar? πŸ€”

31.12.2025 14:57 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

🀯 Just had a massive Eureka moment revisiting Design Patterns.

We often treat #Flutter’s BuildContext as some sort of "magic" variable, but while reading about the Strategy Pattern on refactoring.guru today, everything just clicked.

Flutter applies this pattern beautifully. πŸ§΅πŸ‘‡

31.12.2025 14:57 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Video thumbnail

All the logic is encapsulated within the Rive State Machine.

The frontend code stays clean, it simply passes numeric input trigger "Rooms" to drive the transitions and State Machine handle the rest.

No complex animation code required in the app.

30.12.2025 19:55 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Micro-interactions turn boring forms into memorable experiences 🏠✨

I designed this interactive bedroom counter using @rive.app

The goal: give immediate visual feedback on the property's scale, rather than just showing a number.

Buttery smooth and production-ready.

30.12.2025 19:55 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

El ocio sin retorno de inversiΓ³n es el ΓΊnico ocio verdadero.

29.12.2025 00:15 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Deseo que hogaño se cumplan todas las metas que no se cumplieron antaño 🦾

05.01.2025 04:38 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

Visualizing how a product will look in your home at different times of day completely transforms the shopping experience.
🏠->πŸ’‘

A short demo of how we can use AI to transform the lighting and mood in the Frescomax app.

What do you think of the visual result?

27.12.2025 01:37 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Deseo que hogaño se cumplan todas las metas que no se cumplieron antaño 🦾

05.01.2025 04:38 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

This is fun

21.12.2024 16:36 πŸ‘ 4 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0

On the other hand, if it’s scarce, the rod will be shorter, making it far easier to tip and leaving our balance in life much more fragile.

14.12.2024 18:43 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

This is where I begin to reflect on the role money plays in this analogy, and the best fit I see for money is that it determines the size of our rod. If we have a lot of money, the rod will be longer, and as a result, it will be harder for things beyond our control to disturb our balance.

14.12.2024 18:43 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Many times, we don’t even place these weights ourselves; most of the time, I’d dare say, they are weights beyond our control. Sometimes it rains, and the small drops cause the rod to wobble; other times, the wind blows hard and disturbs that delicate balance that keeps our life in order.

14.12.2024 18:43 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Certainly, the balance depends on what we place on the rod; sometimes it will sway or teeter more to one side than the other, making our life a bit more unstable, but… that’s just how it is! Life fluctuates and is constantly changing, like the weights we place on each side of the rod.

14.12.2024 18:43 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Many people believe that money is everything and brings happiness, and I often imagine it metaphorically as if the balance of life were a rod with a support point right at its center of mass.

14.12.2024 18:43 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I usually see life as a series of elements that need to be balanced to achieve a certain harmony, making life more like a serene and manageable journey.

14.12.2024 18:43 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Yo creo que antes de que se acabe este aΓ±o algo debe caer, posiblemente el 2do trΓ‘iler este cerca

05.12.2024 22:56 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Muy bueno! Pero… como es posible que no tengas a BlueSky aquΓ­ todavΓ­a!? πŸ˜„

03.12.2024 13:16 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

you’re using, and the code suggestions are well-written, utilizing the specific library. If you need to run a command, like in Riverpod, it suggests it, and you just have to execute itβ€”it takes care of the rest.

03.12.2024 13:02 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I’ve been using Windsurf for a week now, and it’s pretty impressive how autonomous it is and how well it performs with the same language models as Cursor. It’s very noticeableβ€”ever since I started using it, I haven’t looked back. Another great feature is that it detects the packages or libraries

03.12.2024 13:02 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

something specific, you must first undergo that β€œmetamorphosis” into the being or state that enables the creation of what you want to accomplish.

03.12.2024 04:53 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

One of my favorite quotes by Nietzsche is:

β€œHe who has much to proclaim one day, stays silently much immersed within himself: he who has to kindle the lightning one day, must for a long time--be a cloud.”

I like it so much because I see it reflected in almost everything. When you want to achieve

03.12.2024 04:53 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0