Is your #Flutter app silently excluding users?
In our new blog:
✅ New accessibility features in Flutter 3.32
✅ Fixing common pitfalls (labels, text scaling, contrast)
✅ Automated testing with meetsGuideline & more
✅ Practical code examples & tools
dcm.dev/blog/2025/06...
Posts by DCM
A small #Flutter lint that can prevent confusing layout issues: avoid-flexible-outside-flex.
This rule warns when Flexible is used outside a Flex widget, such as Row, Column, or Flex, helping keep widget tree layouts working correctly.
Read more: dcm.dev/docs/rules/f...
Riverpod is one of the most used packages for #Flutter, and yet you might have missing points, including:
⚠️ ref .read inside build
🔄 ref .watch outside build
⏳ async gap + stale ref
🧹 missing onDispose cleanup
Read more: dcm.dev/blog/2026/03...
Many teams want better code quality but struggle to know where to start.
Techniques such as:
1⃣ preview all metrics first
✅ start with metrics-recommended
✏️ override thresholds for your project
👩💻 choose metrics based on your actual pain points
Read more: dcm.dev/docs/guides/...
Complex conditions can impact readability in your #Flutter code.
❌ Instead of: (a && b) || (!a && c)
✅ Prefer: a ? b : c
DCM’s "prefer-simpler-boolean-expressions" rule flags redundant #Dart boolean patterns and suggests more readable alternatives.
Read more: dcm.dev/docs/rules/c...
Arrange, Act, Assert is the gold standard for unit testing 🧪
Why? It ensures tests are not doing "multiple rounds of arrange and act."
DCM 1.32 introduced `prefer-test-structure` to warn when a test is not separated into these three sections.
Read more: dcm.dev/docs/rules/c...
Async mistakes can quietly slow down or break your #Flutter app. This post breaks down common pitfalls and how to fix them:
🔄 Misused `FutureOr`
⚠️ Unawaited futures in `initState()`
🔁 Redundant `async/await`
🚦 Inefficient parallel calls
🧵 Confusing `.then()` chains
dcm.dev/blog/2025/05...
In fact, Nicholas, Team Lead at Zühlke, puts it nicely on how DCM is playing a role:
“Integrate DCM from the start, before writing a single line of code. It saves enormous effort later.”
Read the full case study: dcm.dev/customers/zu...
One feature stands out: memory leak detection, as Djordje, Lead Software Architect and People Lead at Zühlke says:
"Memory leak detection helps a lot. I might not notice every time, DCM warns me immediately."
That proved especially valuable in complex reactive flows.
With DCM, the Zühlke engineering team enforces:
📐 Architectural import rules
💀 Unused code checks
✅ Translation checks
🚪 CI quality gates
⏱️ Custom rules like clock .now()
🚀 Maintainability metrics like complexity & nesting depth
And that's not all!
Zühlke engineering team adopted DCM for its speed, depth, and architectural features with a baseline-first approach.
The baseline helped them introduce strict rules without breaking the existing codebase, & to gradually review the rules together during weekly team meetings.
Zühlke scaled complex Flutter projects to 14 developers!
💻 When designing a multi-layered structure that includes domain, application, infrastructure, & UI, it becomes difficult to maintain consistency.
Without guardrails, PR reviews became repetitive & the architecture broke.
🎉 A case study with Zühlke was published!
They use DCM to keep complex, mission-critical #Flutter apps maintainable across healthcare, industrial engineering, and enterprise projects.
💯 Result: faster PRs, fewer regressions, and better visibility into technical debt.
How?👇
#Flutter BLoC is everywhere, but hidden bugs are easy to miss:
💥 isClosed after await
🔁 same-state emits
🧠 create vs .value
🚫 public methods bypass events
🔒 sealed/immutable classes
By reading BLoC source code, we see how to happen & prevent them: dcm.dev/blog/2026/03...
#Flutter BLoC is everywhere, but hidden bugs are easy to miss:
💥 isClosed after await
🔁 same-state emits
🧠 create vs .value
🚫 public methods bypass events
🔒 sealed/immutable classes
By reading BLoC source code, we see how to happen & prevent them: dcm.dev/blog/2026/03...
Async mistakes can quietly slow down or break your #Flutter app. This post breaks down common pitfalls and how to fix them:
🔄 Misused `FutureOr`
⚠️ Unawaited futures in `initState()`
🔁 Redundant `async/await`
🚦 Inefficient parallel calls
🧵 Confusing `.then()` chains
dcm.dev/blog/2025/05...
As Roman said: "We've been using DCM since day zero... we genuinely can't imagine working without it. Any serious project should adopt it.”
Read the entire case study: dcm.dev/customers/ca...
The impact was clear as manual code reviews alone simply weren't enough and standard linters lacked the depth needed for their real-world apps.
🔥 By integrating DCM analysis directly into their workflow, they stopped wasting time hunting for structural mistakes.
Using DCM since "day zero", they enabled:
✍️ Unified quality baselines for all Dart & Flutter codebases
📉 DCM rules & advanced metrics dashboards
💯 Automated early detection of code regressions
Imagine the need to catch subtle anti-patterns, prevent regressions, and automate best practices without increasing developer overhead while ensuring high-quality code across an expanding engineering team!
That is hard task to do!
🎉 We just published a case study with CarOnSale, Europe's fast-growing B2B automotive platform. They secure their Flutter mobile apps and internal libraries with DCM.
💯 The results? Smoother code reviews, automated consistency, & increased developer confidence across teams👇
Is your #Flutter widget tree full of Padding, Align, ClipRect and Transform widgets?
In this video, we show how you can simplify those trees using a single Container widget and how the "prefer-container" rule helps you reduce unnecessary nesting: youtu.be/MdrU_8orso8
If you are using Zed and would like to have your code checked with DCM, check out the getting started docs for the Zed extension: dcm.dev/docs/ide-int...
DCM improved BoursoBank's Flutter runtime safety, catching errors early before production. Applied to 60+ packages, DCM gave developers confidence that sensitive payment and authentication flows are protected.
Read the entire case study: dcm.dev/customers/bo...
Using DCM, they enabled:
🔸 Pre-commit hooks & strict CI checks
🔸 ~20 targeted, safety-first linting rules enabled
🔸 Automated elimination of unsafe APIs & provider lookup errors
🔸 Sonar-compatible reporting for internal governance
👇
Scaling a 60+ package monorepo with developers transitioning from web to Dart while maintaining strict banking compliance wasn’t easy!
Imagine needs for strict CI checks, auto-detection, and automation to eliminate unsafe APIs with Sonar-compatible reporting!
👇
We just published a case study with BoursoBank, France’s largest online bank!
They secure mission-critical #Flutter mobile & web apps with DCM.
💯 The results? maintainable architecture, & zero crashes in payment & authentication flows for 70+ engineers
Here's how they do it 👇
Ever discovered a Flutter widget and thought, “Why didn’t I see this sooner?” 🤔
We’ve uncovered 10 under-the-radar widgets that even seasoned devs almost never use! 👇
dcm.dev/blog/2025/01...
What widget surprised you the most?
Are silent bugs hiding in your #Flutter Provider code?
You might be missing:
💥 .value trap
🚫 .dispose gap
👀 .read vs .watch
✋ .selector logic
We explored the Provider's source code to uncover common architecture mistakes: dcm.dev/blog/2026/03...
Once you have multiple #Flutter projects, it's often required to manage different DCM versions.
Our new guide covers:
🔄 Fast version switching
💻 Helper scripts (Zsh, Bash, Fish, PS)
💙 FVM support
🤝 Team consistency with dcm_global.yaml
Read here: dcm.dev/docs/guides/...