Mobile Tech
1.15K subscribers
92 photos
8 videos
6 files
138 links
Michael Lazebny's blog about @dart and @flutter
lazebny.io
Download Telegram
How to improve Flutter performance?

I've gathered some valuable insights:

πŸ‘‰ Keep build functions pure - no logic inside; build method can be called 120 times per second

πŸ‘‰ Prefer slivers for complex lists - instead of nesting multiple lists

πŸ‘‰ Make use of ListView.builder and SliverChildBuilderDelegate. When items in the list are the same size - set fixed extent

πŸ‘‰ Wrap frequently repainted widgets in RepaintBoundary

πŸ‘‰ When working with heavy computations (cryptography, encryption/decryption) - use isolates

πŸ‘‰ Keep the number of network requests to a minimum

πŸ‘‰ Dispose of resources - focus nodes, controllers, listeners

πŸ‘‰ Use the right state management solution

πŸ‘‰ Optimise assets - limit use of png, jpg files; replace svgs with icon fonts
πŸ‘‰ Set up Crashlytics or Sentry

πŸ‘‰ Don't get too involved with
third party libraries and plugins

πŸ‘‰ Use AnimatedBuilder's child field properly

πŸ‘‰ Test on real devices and look at the Profiler tab

Hope this was useful!
πŸ‘13❀5πŸ”₯4
Mobile Tech
How to improve Flutter performance? I've gathered some valuable insights: πŸ‘‰ Keep build functions pure - no logic inside; build method can be called 120 times per second πŸ‘‰ Prefer slivers for complex lists - instead of nesting multiple lists πŸ‘‰ Make use…
An interesting idea came to me:

Create a curated post on my blog where I will share the suggestions and best practices for flutter apps ( it will be updated each time I find something new )
πŸ‘22πŸ”₯5
How to ship apps faster πŸš€

- Choose speed over quality
- Eliminate code reviews
- Don't do sprint planning
- Remove CI & Analyzer & Linter
- Ignore user feedback and testing
- Don't build a working MVP with minimal functionality
- Avoid regular team communication and updates
- Ignore documentation and code comments
- Ignore industry best practices and coding standards
- Do not periodically refactor to improve code quality.
- Leave a pile of TODOs after coding
- Don't think about backups
- Don't handle errors & exceptions

By doing all this, your app will definitely be shipped very quickly (maybe not where you planned though).
❀2😁2
I am writing an article on one of the most popular Stoic principles - the dichotomy of control.

After it, I will post a curated list of tips, best practices, and suggestions for flutter apps.
πŸ‘5❀4
And one more thing I wanted to share: I decided to set myself a challenge:

Post on LinkedIn every day for a month.

I will tell you how many followers, impressions, likes, etc. I gained during that time.
πŸ‘4πŸ”₯4
Really #funny idea from stackoverflow 😁
😁5🀯1
Decided to hide the dock in macos. Always thought it was inconvenient.

In fact, it is, but it removes distractions and allows you to focus on the open window.

How do you fight with #distractions?
πŸ‘3❀2
Hey! Today I created a brief article about character encoding. A bit of history and explanations of terms like ascii, utf8 and unicode.

https://lazebny.io/character-encoding-and-how-it-works-2/
πŸ‘2πŸ”₯2
Will it be interesting if I create my own Dart & Flutter roadmap?
πŸ‘18πŸ”₯5😐2
Starting the work on Flutter best practises and tips.
πŸ‘8πŸ”₯5πŸ₯°3
I will publish Best practices of flutter on Monday :) hope you are waiting!
πŸ”₯11❀5πŸ‘5
image_2023-11-18_09-28-30.png
930.4 KB
Do you like this setup?

Just changed theme & font :D
πŸ‘8
By the way, just a reminder:

You still can use material 2

Just set useMaterial3 to false…
😁7πŸ‘4🀑2
When to use InheritedModel in Flutter?

Inherited widgets are a powerful, natural way to propagate information down the tree in Flutter.

The crucial thing is that they are O(1). It means, that the time needed to obtain an inherited widget from the tree is equivalent to constant.

When InheritedWidget changes (i.e., some data is updated), dependent elements are notified via didChangeDependencies and eventually rebuilt.

However, when clients (modules that depend on a widget) are interested only in a certain part of its data things become a bit complicated as the inherited widget doesn’t support it.

In such a case, the Inherited Model comes to our help. Basically, they extend the functionality of InheritedWidget by adding an aspect field.

Clients declare the aspect they’re interested in and are notified only if the data they’re interested in changes!

I’ve enclosed an example of an inherited model used for settings. Basically, when the client is interested in the locale -> it will be notified if the locale changes.

There is also a widget called MediaQuery that’s probably used by every #Flutter application. It also implements InheritedModel with its brightnessOf, sizeOf, and others.

LinkedIn
πŸ‘11
In the process of writing an article about tips, discovered this gem :D

#funny
😁8🀯2πŸ‘€2❀1🀑1