Premium Advanced Flutter Trainings from Majid Hajian

Craft Awesome Flutter Apps with Confidence

flutter engineering book

Go beyond just coding:

Dive into the essence of Flutter engineering. This isn't about making things work; it's about mastering the art. From understanding high-level strategies to grasping complex advanced concepts, I am on a mission to transform you into a Flutter professional.

FOO
BAR
BAZ

This guide is direct and concise, emphasizing practical examples. You will learn different topics chapter by chapter at your own pace. Prior experience with Flutter, Dart, and basic programming is essential.

What should I do to become a better / professional Flutter engineer?

— A Flutter developer

Hi! I'm Majid Hajian, author of the "Flutter Engineering" project. I am a passionate software engineer since 2006, having taken on various roles ranging from developer to architect. I've been a Flutter community leader and educator since 2019. Ever since I embraced these roles, the above question keeps popping up.

Majid Hajian

Throughout my career, I have worked in various roles such as a backend, frontend, full-stack developer, software architect, and most recently, Head of Developer Relations. Leveraging my experience, I have spent nearly a year developing the "Flutter Engineering" project. I aim to enhance your skills and lead you towards expertise with this project. Through "Flutter Engineering," I aim to share the valuable lessons I've learned throughout my career.

Although I tend to have a logical and analytical approach, which makes me skilled in programming, I am always curious about becoming a superior software engineer. What is the most effective way to design an application's architecture? How can I manage all aspects of app development, not just coding?

Take a look at the "Flutter Engineering" project! I've compiled a book with architectural and advanced content and supporting materials like videos, code samples, a podcast, and a newsletter.

The Flutter Engineering project goes beyond the book, diving deep into software engineering concepts and advanced topics tailored for Flutter app development.

Reviewers & Contributors

Thanks to my amazing friends who their commitment to detail has ensured the accuracy and clarity of the content.

Avatar of Simon Lightfoot

Simon Lightfoot

Avatar of Mangirdas Kazlauskas

Mangirdas Kazlauskas

Avatar of Roman Jaquez

Roman Jaquez

Avatar of Erick Zanardo

Erick Zanardo

Avatar of Carlo Lucera

Carlo Lucera

Avatar of Marco Napoli

Marco Napoli

Avatar of Alessio Salvadorini

Alessio Salvadorini

Avatar of Pooja Bhaumik

Pooja Bhaumik

Avatar of Dominik Roszkowski

Dominik Roszkowski

Avatar of Oleksandr Leushchenko

Oleksandr Leushchenko

Avatar of Anna Leushchenko

Anna Leushchenko

Avatar of Tomáš Soukal

Tomáš Soukal

Avatar of Danielle Cox

Danielle Cox

Avatar of Manuela Sakura Rommel

Manuela Sakura Rommel

Avatar of Verena Zaiser

Verena Zaiser

Avatar of Cagatay Ulusoy

Cagatay Ulusoy

Avatar of Mike Rydstrom

Mike Rydstrom

Avatar of Muhammed Salih Guler

Muhammed Salih Guler

Avatar of Renan Araujo

Renan Araujo

Now, let's explore the book

Table of Content

Part 1: Foundation of Flutter Engineering

  1. 1. Flutter Engineering: Core Concepts
    1. Engineering Software with Flutter
    2. Unpacking the Core Principles
    3. Lifecycle of Flutter Development
    4. Flutter Engineering vs. Programming
    5. Flutter's Position in Tech Evolution
    6. Conclusion
  2. 2. Unveiling Flutter: Architecture and Engineering Insights
    1. Decoding the Importance of Flutter Internals
    2. The Reactive & Declarative Nature of Flutter
    3. Flutter's Motto
    4. Principal Components and Framework Insights
    5. Graphics, Rendering, and Visualization
    6. Navigating Through the Widget & App Lifecycle
    7. Managing Constraints in Flutter UI
    8. Significance and Usage of Keys in Flutter
    9. Conclusion
  3. 3. Flutter’s Integration with Native Platforms
    1. Platform Channel
    2. Dart FFI
    3. FFIgen
    4. JNIgen (Java Native Interface Generator)
    5. Conclusion
  4. 4. Applying Engineering Principles in Flutter
    1. OOP Analysis
    2. Implementing Classic Software Principles
    3. Conclusion
  5. 5. Design Patterns in Flutter
    1. Decoding the Role of Design Patterns
    2. Creational Patterns
    3. Structural Patterns
    4. Behavioral Patterns
    5. Conclusion

Part 2: Architecture

  1. 6. Architectural Foundations
    1. The Critical Role of Architectural Decisions
    2. Variables Influencing Architectural Choices
    3. Navigating the Architectural Landscape
    4. Cultivating an Architectural Mindset
    5. Iterative Architecture
    6. Striking a Balance: Simplicity vs. Complexity
    7. Conclusion
  2. 7. Introducing Architecture Styles
    1. Architectural Styles Knowledge
    2. Layered (n-tier) Style
    3. Event-Driven Architecture (EDA)
    4. Microkernel (Plug-in) Architecture
    5. Other Architectures and Paradigms
    6. Conclusion
  3. 8. UI Architecture Patterns
    1. The Landscape of UI Architectures
    2. Prominent Flutter Architectures
    3. Architectures Beyond Flutter Norms
    4. Clean Architecture
    5. Balancing Trade-offs
    6. Customizing Architectures for Flutter
    7. Conclusion
  4. 9. Concurrency and Parallelism
    1. Demystifying Concurrency vs. Parallelism
    2. The Importance of Efficient Task Handling
    3. Flutter's Single UI Thread Principle
    4. The Asynchronous Programming Trio
    5. Managing Asynchronous Data Flows
    6. Expanding Horizons with Isolates
    7. Conclusion
  5. 10. Offline Capabilities in Flutter
    1. The Dual-edged Sword: Challenges and Benefits
    2. Embracing the Offline-first Philosophy
    3. Monitoring and Handling Connectivity Changes
    4. Ensuring Data Integrity During Background Syncs
    5. Caching Patterns
    6. Conclusion
  6. 11. State Management
    1. Defining and Understanding State in Apps
    2. Local vs. Global State: Effective Scoping Techniques
    3. Flutter's In-built Approaches
    4. Exploring Popular Solutions
    5. The Flexibility of Flutter: Swapping and Iterating
    6. Conclusion
  7. 12. Dependency Injection in Flutter
    1. The Principles Behind Dependency Injection
    2. Benefits of Decoupled Code
    3. Implementing DI in a Flutter App
    4. Exploring Flutter Dependency Injection Packages
    5. Conclusion

Part 3: Processes

  1. 13. Rules and Style Guidelines
    1. The Rationale Behind Rules
    2. Crafting Meaningful Guidelines
    3. Ensuring Compliance with Rules
    4. Leveraging Automation for Consistency
    5. Linters and dartfmt
    6. Conclusion
  2. 14. Collaboration in Development
    1. Version Control Essentials
    2. Embracing CI/CD in Flutter Development
    3. Effective Code Reviews
    4. Conclusion
  3. 15. The Art of Documentation
    1. The Spectrum of Documentation in Software Development
    2. Embracing Flutter's Documentation Philosophy
    3. Treating Documentation as a Living Entity
    4. The Perils of Outdated Documentation
    5. Conclusion
  4. 16. Testing in Flutter
    1. Why Testing Matters: Beyond Catching Bugs
    2. Grasping the Testing Pyramid in Flutter
    3. Unit and Widget Testing Essentials
    4. Test Doubles
    5. Test Doubles in Flutter
    6. The World of Integration and Golden Tests
    7. Conclusion
  5. 17. Environments and Flavors
    1. The Need for Multiple Environments & Flavors
    2. Seamlessly Integrating CI/CD
    3. Conclusion

Part 4: Ethical Engineering

  1. 18. Prioritizing Security in Flutter
    1. Foundational Principles of Security
    2. The CIA Triad: Confidentiality, Integrity, Availability
    3. Addressing the OWASP Top 10
    4. Static and Dynamic Analysis
    5. Flutter-Specific Security Best Practices
    6. Conclusion
  2. 19. Cryptography in Flutter
    1. Distinguishing Encryptions
    2. The Fundamentals of Hashing
    3. Ensuring Data Integrity with Digital Signatures
    4. Conclusion
  3. 20. Protecting User Privacy
    1. Understanding Key Privacy Terminologies
    2. Embracing the Privacy by Design Philosophy
    3. Best Practices to Support User Privacy
    4. International Data Protection Regulations
    5. Conclusion
  4. 21. Ensuring Accessibility for All
    1. Recognizing Various Disabilities
    2. The Tangible Benefits of Inclusive App Design
    3. The Four Pillars of Accessibility
    4. Tools and Widgets Promoting Accessibility
    5. Flutter Accessibility Audit
    6. Conclusion

Part 5: Advancing UI Development

  1. 22. Crafting Adaptive UIs
    1. Platform-Specific UI Considerations
    2. Leveraging Unique Platform Features
    3. Conclusion
  2. 23. Responsive UI Techniques
    1. Principles of Responsive Design
    2. Approaches to Responsiveness in Flutter
    3. Adapting UI to Screen Orientation
    4. Conclusion
  3. 24. i18n and l10n
    1. i18n vs. l10n: Key Differences
    2. Implementing Internationalization in Flutter
    3. Catering to Right-to-Left Languages
    4. Conclusion
  4. 25. Embracing Theming in Flutter
    1. Flutter Themes
    2. Custom Theming Techniques
    3. Managing Dark and Light Themes
    4. MaterialApp Theming Steps
    5. Theming Tools
    6. Conclusion
  5. 26. Custom Painters & Shaders
    1. The Art of CustomPainter
    2. Exploring Shaders
    3. Using Shaders in Flutter
    4. Conclusion

Bonus Book: Flutter, Above and Beyond

  1. 1. Advanced Techniques
    1. Native Platform View
    2. WebAssembly (WASM) with Flutter
    3. Bridging with Native Code: FFIgen/JNIgen
    4. Embedded Elements in Flutter
    5. Techniques for Code-Generation in Flutter
    6. Deep Links vs Dynamic links
    7. Implementing a Force Upgrade Strategy
    8. State Restoration
    9. Error Handling and Exception Techniques
    10. Feature Flags
  2. 2. Expanding Flutter's Reach
    1. Integrating Flutter with IoT
    2. Game Development using Flutter
    3. Exploring 3D Graphics with Flutter
  3. 3. Dart Server-side
    1. Exploring the Depths of Server-side Dart
    2. Edge Functions with Dart
    3. 4. What's Next?
  4. 4. Enhancing Performance in Flutter
    1. The Importance of Performance in UX
    2. Performance Metrics and Goals
    3. Dart's JIT & AOT Compilation
    4. Flutter Profiling Techniques
    5. Delving into Threading and Concurrency
    6. Performance Best Practices and Pitfalls
    7. The Dangers of Over-Engineering
    8. Conclusion
  5. 5. Optimization (Part 1)
    1. Rendering Optimization Techniques
      • Leveraging const Constructors
      • Minimizing Overdraw
    2. Data Processing Efficiency
      • Adopting Lazy Evaluation
      • Optimal Algorithm and Data Structure Use
    3. Memory Management Best Practices
      • Detecting and Resolving Memory Leaks
    4. Advanced Threading Techniques
      • Working with Isolates
      • Employing the RepaintBoundary Widget
    5. Conclusion
  6. 6. Optimization (Part 2)
    1. Efficient Network Operations
      • Network Data Caching
    2. Optimizing Images and Assets
      • Selecting Optimal Image Formats
      • Asset Compression and Caching
      • Preloading and Deferred Loading Techniques
    3. Reducing App Size and Storage
      • Embracing Tree Shaking
      • ABI-specific APK Reduction
      • Detailed App Size Analysis
      • Code spliting
    4. Conclusion

Flutter Engineering Academy

If convinced, order the book now, automatically gaining access to newsletter.

If undecided, remember, the newsletter is a free, invaluable resource in its own right.

Get just one or get ’em all.

Learn how to become Flutter professional by yourself using specific tactics explained from a software engineer's point-of-view.

The Mastery package

$149 $99
USD + local taxes
  • Everything in Essential package plus:
  • Flutter, Going above and beyond book - over 300+ pages (soon)
  • Exclusive access to Flutter Engineering Academy
  • Completed examples, exercises and other scripts
  • Lifetime updates & access to any new material that’s added to the books

The Essential - eBook

$49 $39
USD + local taxes
  • One time purchase
  • Access 5 parts and over 500 pages
  • Digital format only (PDF, ePub)
  • Completed exercises
  • Free premium newsletter subscription

💙 10% of my income will be donated to Flutter and Dart open-source ecosystem 💙

Have question? check out FAQ

Get HardCover or PaperCover

Flutter Engineering book is available in many counties around the world.

Amazon

Can't see your country?
First, you can order this book on Amazon.com and they can ship to you. I'll keep updating this page with global availability of the book. If your country isn't listed, check local online retailers. It should be available soon if not already.

Community Sponsorships

Empowering Each Other

Joining hands with my sponsorship program, you're not just supporting a project; you're empowering dreams, fostering education, and creating a haven of opportunity for those who seek it and potentially even cannot afford it. Your contributions directly assist community members in accessing essential learning materials, free of cost or at a discount and of course Flutter and Dart open-source projects.

Have question? or considering to sponsor differently?
Reach out to me through any platform you know I use, or send an email to [email protected].
Majid Hajian

Author

Majid Hajian – Hey there, I’m the author behind ‘Flutter Engineering’.

I'm a passionate software architect and engineer, known for intricate web and mobile creations. As a Google Developer Expert, my contributions extend beyond coding: I teach on Pluralsight, run a YouTube channel, and am passionate about Flutter and Progressive Web Applications (PWA). Engaging with the community is key for me, whether through writing, speaking, or workshops. My dedication is further reflected in my open-source contributions and leadership in events, notably the FlutterVikings conference. I'm driven by a mission to elevate developers and advance software development.

Follow on Twitter / X Follow on Linkedin

Flutter Engineers Newsletter

Unlock your exclusive access to future trainings! Join now for insights and early access to free content! This book is just the beginning!

I'm all about helping you level up and truly shine in your field. Promise, no spam or unnecessary emails.

Frequently asked questions

Everything you need to know

What does “lifetime update“ mean in mastery package exactly?
The books are a one-time purchase, with no recurring subscription. When you purchase any of the training materials, you will have access to all of the content in that package forever even when I update, I will send you a new copy!
Is this a monthly cost?
Nope and nope. Pay once, have them forever.
Do you offer a student discount?
Definitely! Send me at [email protected] and show me you are a student, and I will shoot over a discount code to you. Whether you are in traditional schooling, evening courses, or coding bootcamps, you are covered!
The price is too high for me, can I get a discount?
Definitely! I am here to help you leveling up and not to make money! Send me at [email protected] and tell why the price is high for you and how much you can afford for the package that you are looking for.
Can I get an invoice?
Sure! After making a purchase we will automatically email you a receipt. That email will include a link to generate a more detailed invoice that can include your company information, should you need that for tax purposes.
Is there any DRM?
The book is totally DRM free! My goal is to help you and not to make life complicated for you!
Can I upgrade to the mastery package later?
Of course! Shoot me an email at [email protected] and I will sort you out.
What if I decide it is not for me?
No problem at all! If you change your mind, email me at [email protected] within 15 days of your purchase, and I'll refund you in full, no questions asked. However, please be aware that there might be a small refund fee from my vendor to cover the payment processing costs.
I have another question!
No problem at all! Email me at [email protected]
How do I access and watch the videos?
Support videos are currently being recorded and are set to release in April / May 2024. If you've subscribed to the newsletter, keep an eye on your email for updates.