DCM
@dcm.dev
Advanced linter for Flutter and Dart developers dcm.dev. Join our discord https://discord.gg/Vzjprgk4sb.
"its not AI, but it’s better!"
"its not AI, but it’s better!"
🤯 8 Flutter widgets you’re probably overlooking and why they matter.
In this article, we will show practical usage + their implementation source code to learn more from!
Which one surprised you? 👉 dcm.dev/blog/2025/10...
In this article, we will show practical usage + their implementation source code to learn more from!
Which one surprised you? 👉 dcm.dev/blog/2025/10...
8 More Flutter Widgets You’re Probably Not Using (But Should Be) | DCM - Code Quality Tool for Flutter Developers
Discover 8 powerful Flutter widgets you might not be using yet, with practical examples and tips to boost your app's performance and UI versatility.
dcm.dev
October 28, 2025 at 7:36 PM
🤯 8 Flutter widgets you’re probably overlooking and why they matter.
In this article, we will show practical usage + their implementation source code to learn more from!
Which one surprised you? 👉 dcm.dev/blog/2025/10...
In this article, we will show practical usage + their implementation source code to learn more from!
Which one surprised you? 👉 dcm.dev/blog/2025/10...
Ever written a function that always returns the same value (like "true")? 🤔
It usually means the logic isn’t doing what you think.
The "function-always-returns-same-value" rule catches these bugs before they spread! 👉 dcm.dev/docs/rules/c...
It usually means the logic isn’t doing what you think.
The "function-always-returns-same-value" rule catches these bugs before they spread! 👉 dcm.dev/docs/rules/c...
September 3, 2025 at 2:32 PM
Ever written a function that always returns the same value (like "true")? 🤔
It usually means the logic isn’t doing what you think.
The "function-always-returns-same-value" rule catches these bugs before they spread! 👉 dcm.dev/docs/rules/c...
It usually means the logic isn’t doing what you think.
The "function-always-returns-same-value" rule catches these bugs before they spread! 👉 dcm.dev/docs/rules/c...
Overriding fields from a super constructor with a getter? 🤔 That can break your code or lead to unexpected results!
The "avoid-suspicious-super-overrides" rule helps you quickly spot and fix such issues.
👉 youtu.be/X_VgMfUSid4
The "avoid-suspicious-super-overrides" rule helps you quickly spot and fix such issues.
👉 youtu.be/X_VgMfUSid4
avoid-suspicious-super-overrides (Rules of the Week)
YouTube video by DCM Analyzer
youtu.be
September 1, 2025 at 2:50 PM
Overriding fields from a super constructor with a getter? 🤔 That can break your code or lead to unexpected results!
The "avoid-suspicious-super-overrides" rule helps you quickly spot and fix such issues.
👉 youtu.be/X_VgMfUSid4
The "avoid-suspicious-super-overrides" rule helps you quickly spot and fix such issues.
👉 youtu.be/X_VgMfUSid4
AI is speeding up coding but also technical debt ⚡️
In our new post we have brought to you how #Dart & #Flutter devs can use Dart & Flutter and DCM MCP servers to:
- Automate cleanup loops
- Enforce lints & metrics
- Keep AI-generated code maintainable
Read here: dcm.dev/blog/2025/08...
In our new post we have brought to you how #Dart & #Flutter devs can use Dart & Flutter and DCM MCP servers to:
- Automate cleanup loops
- Enforce lints & metrics
- Keep AI-generated code maintainable
Read here: dcm.dev/blog/2025/08...
Let Your AI Assistant Tame Your Tech Debt (with Dart, Flutter and DCM MCP Servers) | DCM - Code Quality Tool for Flutter Developers
AI-generated code is creating tech debt. Learn how to build an agentic workflow that makes your AI assistant clean up after itself. This guide for Dart and Flutter developers uses DCM and MCP to autom...
dcm.dev
August 27, 2025 at 12:56 PM
AI is speeding up coding but also technical debt ⚡️
In our new post we have brought to you how #Dart & #Flutter devs can use Dart & Flutter and DCM MCP servers to:
- Automate cleanup loops
- Enforce lints & metrics
- Keep AI-generated code maintainable
Read here: dcm.dev/blog/2025/08...
In our new post we have brought to you how #Dart & #Flutter devs can use Dart & Flutter and DCM MCP servers to:
- Automate cleanup loops
- Enforce lints & metrics
- Keep AI-generated code maintainable
Read here: dcm.dev/blog/2025/08...
Reposted by DCM
If your #Flutter widget tree has a matching sequence of "Align", "Padding", "ClipPath", and others, it can often be replaced with a single "Container" widget.
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
August 7, 2025 at 1:20 PM
If your #Flutter widget tree has a matching sequence of "Align", "Padding", "ClipPath", and others, it can often be replaced with a single "Container" widget.
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
📦 One widget per file = easier-to-navigate, easier-to-maintain #Flutter code.
See how DCM enforces this best practice ⬇️ youtu.be/xa4zMwpXrr8
See how DCM enforces this best practice ⬇️ youtu.be/xa4zMwpXrr8
prefer-single-widget-per-file (Rules of the Week)
YouTube video by DCM Analyzer
youtu.be
August 25, 2025 at 3:27 PM
📦 One widget per file = easier-to-navigate, easier-to-maintain #Flutter code.
See how DCM enforces this best practice ⬇️ youtu.be/xa4zMwpXrr8
See how DCM enforces this best practice ⬇️ youtu.be/xa4zMwpXrr8
🔥 13 new rules!
DCM 1.31.0 is out and we've added 13 new rules that include Riverpod and #Flutter best practices, as well as common practices for #Dart.
➡️ Learn more about new rules in our latest blog: dcm.dev/blog/2025/08...
DCM 1.31.0 is out and we've added 13 new rules that include Riverpod and #Flutter best practices, as well as common practices for #Dart.
➡️ Learn more about new rules in our latest blog: dcm.dev/blog/2025/08...
August 25, 2025 at 1:33 PM
🔥 13 new rules!
DCM 1.31.0 is out and we've added 13 new rules that include Riverpod and #Flutter best practices, as well as common practices for #Dart.
➡️ Learn more about new rules in our latest blog: dcm.dev/blog/2025/08...
DCM 1.31.0 is out and we've added 13 new rules that include Riverpod and #Flutter best practices, as well as common practices for #Dart.
➡️ Learn more about new rules in our latest blog: dcm.dev/blog/2025/08...
DCM 1.31.0 is here! 🎉
🔧 13 new rules
🤖 DCM MCP Server
💾 Memory optimization for code quality commands
🧩 Baseline for check-parameters
📋 more rules in Free and Starter plans
📊 JSON/CSV for lints-preview, Dashboard improvements, and more.
👉 dcm.dev/blog/2025/08...
🔧 13 new rules
🤖 DCM MCP Server
💾 Memory optimization for code quality commands
🧩 Baseline for check-parameters
📋 more rules in Free and Starter plans
📊 JSON/CSV for lints-preview, Dashboard improvements, and more.
👉 dcm.dev/blog/2025/08...
August 18, 2025 at 6:04 PM
DCM 1.31.0 is here! 🎉
🔧 13 new rules
🤖 DCM MCP Server
💾 Memory optimization for code quality commands
🧩 Baseline for check-parameters
📋 more rules in Free and Starter plans
📊 JSON/CSV for lints-preview, Dashboard improvements, and more.
👉 dcm.dev/blog/2025/08...
🔧 13 new rules
🤖 DCM MCP Server
💾 Memory optimization for code quality commands
🧩 Baseline for check-parameters
📋 more rules in Free and Starter plans
📊 JSON/CSV for lints-preview, Dashboard improvements, and more.
👉 dcm.dev/blog/2025/08...
Using `_` instead of `context`? You might be referencing the wrong `BuildContext`. That can lead to subtle bugs.
🔗 Here is a rule to help you quickly find such issues: dcm.dev/docs/rules/f...
#Flutter #Dart
🔗 Here is a rule to help you quickly find such issues: dcm.dev/docs/rules/f...
#Flutter #Dart
August 12, 2025 at 10:15 AM
Using `_` instead of `context`? You might be referencing the wrong `BuildContext`. That can lead to subtle bugs.
🔗 Here is a rule to help you quickly find such issues: dcm.dev/docs/rules/f...
#Flutter #Dart
🔗 Here is a rule to help you quickly find such issues: dcm.dev/docs/rules/f...
#Flutter #Dart
🚀 Introducing the DCM Starter Plan: Built for Small Teams
🪑 Start from 2 seats
🔍 213 rules
🛠️ Quick fixes
‼️ All CLI commands
📊 Dashboards & CI/CD
📦 Up to 100k LOC
Learn more 👉 dcm.dev/pricing
🪑 Start from 2 seats
🔍 213 rules
🛠️ Quick fixes
‼️ All CLI commands
📊 Dashboards & CI/CD
📦 Up to 100k LOC
Learn more 👉 dcm.dev/pricing
Pricing | DCM - Code Quality Tool for Flutter Developers
Find a plan that is right for you.
dcm.dev
August 8, 2025 at 4:45 PM
🚀 Introducing the DCM Starter Plan: Built for Small Teams
🪑 Start from 2 seats
🔍 213 rules
🛠️ Quick fixes
‼️ All CLI commands
📊 Dashboards & CI/CD
📦 Up to 100k LOC
Learn more 👉 dcm.dev/pricing
🪑 Start from 2 seats
🔍 213 rules
🛠️ Quick fixes
‼️ All CLI commands
📊 Dashboards & CI/CD
📦 Up to 100k LOC
Learn more 👉 dcm.dev/pricing
If your #Flutter widget tree has a matching sequence of "Align", "Padding", "ClipPath", and others, it can often be replaced with a single "Container" widget.
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
August 7, 2025 at 1:20 PM
If your #Flutter widget tree has a matching sequence of "Align", "Padding", "ClipPath", and others, it can often be replaced with a single "Container" widget.
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
Use the "prefer-container" rule to simplify the layout dcm.dev/docs/rules/f...
DCM 1.30.0 includes better baseline support in Dashboards! 🚀
✅ Toggle between open & baselined issues
✅ New Baseline tab for projects
🔗 Learn more in our blog: dcm.dev/blog/2025/07...
✅ Toggle between open & baselined issues
✅ New Baseline tab for projects
🔗 Learn more in our blog: dcm.dev/blog/2025/07...
August 6, 2025 at 7:20 PM
DCM 1.30.0 includes better baseline support in Dashboards! 🚀
✅ Toggle between open & baselined issues
✅ New Baseline tab for projects
🔗 Learn more in our blog: dcm.dev/blog/2025/07...
✅ Toggle between open & baselined issues
✅ New Baseline tab for projects
🔗 Learn more in our blog: dcm.dev/blog/2025/07...
Our new article covers the hard parts of #Flutter testing including:
✅ testing timers,
✅ mocking platform plugins,
✅ responsive UI,
✅ and even CustomPainter logic.
Learn more to level up your testing with practical examples 👇
dcm.dev/blog/2025/07...
✅ testing timers,
✅ mocking platform plugins,
✅ responsive UI,
✅ and even CustomPainter logic.
Learn more to level up your testing with practical examples 👇
dcm.dev/blog/2025/07...
Navigating the Hard Parts of Testing in Flutter | DCM - Code Quality Tool for Flutter Developers
A deep dive into advanced Flutter testing techniques: learn to handle edge cases, simulate time, test responsive layouts, mock platform plugins, and achieve reliable coverage with practical examples.
dcm.dev
July 30, 2025 at 6:22 PM
Our new article covers the hard parts of #Flutter testing including:
✅ testing timers,
✅ mocking platform plugins,
✅ responsive UI,
✅ and even CustomPainter logic.
Learn more to level up your testing with practical examples 👇
dcm.dev/blog/2025/07...
✅ testing timers,
✅ mocking platform plugins,
✅ responsive UI,
✅ and even CustomPainter logic.
Learn more to level up your testing with practical examples 👇
dcm.dev/blog/2025/07...
💡 Why removing commented-out-code matters?
✅ It often hides unfinished work or dead logic
✅ Adds noise and confusion for other devs
✅ Git handles history anyway
Learn more → dcm.dev/docs/rules/c...
✅ It often hides unfinished work or dead logic
✅ Adds noise and confusion for other devs
✅ Git handles history anyway
Learn more → dcm.dev/docs/rules/c...
July 28, 2025 at 11:41 AM
💡 Why removing commented-out-code matters?
✅ It often hides unfinished work or dead logic
✅ Adds noise and confusion for other devs
✅ Git handles history anyway
Learn more → dcm.dev/docs/rules/c...
✅ It often hides unfinished work or dead logic
✅ Adds noise and confusion for other devs
✅ Git handles history anyway
Learn more → dcm.dev/docs/rules/c...
👀 Using GestureDetector with no event handlers? It’s doing nothing.
The DCM rule "avoid-unnecessary-gesture-detector" warns when gesture detectors are unused.
🎥 Watch to learn how to fix it: youtu.be/FvU8a0jl2b4
The DCM rule "avoid-unnecessary-gesture-detector" warns when gesture detectors are unused.
🎥 Watch to learn how to fix it: youtu.be/FvU8a0jl2b4
avoid-unnecessary-gesture-detector (Rules of the Week)
YouTube video by DCM Analyzer
youtu.be
July 25, 2025 at 8:42 AM
👀 Using GestureDetector with no event handlers? It’s doing nothing.
The DCM rule "avoid-unnecessary-gesture-detector" warns when gesture detectors are unused.
🎥 Watch to learn how to fix it: youtu.be/FvU8a0jl2b4
The DCM rule "avoid-unnecessary-gesture-detector" warns when gesture detectors are unused.
🎥 Watch to learn how to fix it: youtu.be/FvU8a0jl2b4
🚀 No more SizedBox hacks!🚀
Flutter 3.27 added a "spacing" argument to Row, Column, and Flex 🙌
And with the "prefer-spacing" rule you can quickly find such cases in your #Flutter codebase → dcm.dev/docs/rules/f...
Flutter 3.27 added a "spacing" argument to Row, Column, and Flex 🙌
And with the "prefer-spacing" rule you can quickly find such cases in your #Flutter codebase → dcm.dev/docs/rules/f...
July 23, 2025 at 8:55 PM
🚀 No more SizedBox hacks!🚀
Flutter 3.27 added a "spacing" argument to Row, Column, and Flex 🙌
And with the "prefer-spacing" rule you can quickly find such cases in your #Flutter codebase → dcm.dev/docs/rules/f...
Flutter 3.27 added a "spacing" argument to Row, Column, and Flex 🙌
And with the "prefer-spacing" rule you can quickly find such cases in your #Flutter codebase → dcm.dev/docs/rules/f...
Creating a new Future inside FutureBuilder in #Flutter? That restarts the async task every rebuild.
Pass an existing Future from "initState", not from "build".
🔗Learn more how to fix this: dcm.dev/docs/rules/f...
Pass an existing Future from "initState", not from "build".
🔗Learn more how to fix this: dcm.dev/docs/rules/f...
July 21, 2025 at 1:36 PM
Creating a new Future inside FutureBuilder in #Flutter? That restarts the async task every rebuild.
Pass an existing Future from "initState", not from "build".
🔗Learn more how to fix this: dcm.dev/docs/rules/f...
Pass an existing Future from "initState", not from "build".
🔗Learn more how to fix this: dcm.dev/docs/rules/f...
🎉 DCM 1.30.0: 22 New Lint Rules!
Our latest release introduced 22 new lint rules to boost code quality in #Dart and #Flutter code!
Check out our new rules: dcm.dev/blog/2025/07...
Our latest release introduced 22 new lint rules to boost code quality in #Dart and #Flutter code!
Check out our new rules: dcm.dev/blog/2025/07...
July 18, 2025 at 5:56 PM
🎉 DCM 1.30.0: 22 New Lint Rules!
Our latest release introduced 22 new lint rules to boost code quality in #Dart and #Flutter code!
Check out our new rules: dcm.dev/blog/2025/07...
Our latest release introduced 22 new lint rules to boost code quality in #Dart and #Flutter code!
Check out our new rules: dcm.dev/blog/2025/07...
🤔 Using "super()" in a constructor when it’s not needed?
The "avoid-unnecessary-super" rule warns when you add unnecessary super invocations or prefixes.
🎥 Watch to learn how to fix it: youtu.be/oU3q2AUj9o4
The "avoid-unnecessary-super" rule warns when you add unnecessary super invocations or prefixes.
🎥 Watch to learn how to fix it: youtu.be/oU3q2AUj9o4
avoid-unnecessary-super (Rules of the Week)
YouTube video by DCM Analyzer
youtu.be
July 18, 2025 at 11:47 AM
🤔 Using "super()" in a constructor when it’s not needed?
The "avoid-unnecessary-super" rule warns when you add unnecessary super invocations or prefixes.
🎥 Watch to learn how to fix it: youtu.be/oU3q2AUj9o4
The "avoid-unnecessary-super" rule warns when you add unnecessary super invocations or prefixes.
🎥 Watch to learn how to fix it: youtu.be/oU3q2AUj9o4
📊 DCM 1.30.0 Dashboards updates:
✔️ Removed "--with-details" flag
✔️ New summary views for issues & metrics
✔️ Toggle & tab for baselined issues
✔️ Smaller uploads
Full details → dcm.dev/blog/2025/07...
✔️ Removed "--with-details" flag
✔️ New summary views for issues & metrics
✔️ Toggle & tab for baselined issues
✔️ Smaller uploads
Full details → dcm.dev/blog/2025/07...
July 17, 2025 at 12:21 PM
📊 DCM 1.30.0 Dashboards updates:
✔️ Removed "--with-details" flag
✔️ New summary views for issues & metrics
✔️ Toggle & tab for baselined issues
✔️ Smaller uploads
Full details → dcm.dev/blog/2025/07...
✔️ Removed "--with-details" flag
✔️ New summary views for issues & metrics
✔️ Toggle & tab for baselined issues
✔️ Smaller uploads
Full details → dcm.dev/blog/2025/07...
🧹 Creating instances with a "dispose" method but not assigning them to a variable?
That can cause memory leaks. The DCM rule "avoid-undisposed-instances" catches this before it becomes a bug.
🎥 Watch to learn how to fix it: youtu.be/cSiqXa8UMDM
That can cause memory leaks. The DCM rule "avoid-undisposed-instances" catches this before it becomes a bug.
🎥 Watch to learn how to fix it: youtu.be/cSiqXa8UMDM
avoid-undisposed-instances (Rules of the Week)
YouTube video by DCM Analyzer
youtu.be
July 15, 2025 at 6:10 PM
🧹 Creating instances with a "dispose" method but not assigning them to a variable?
That can cause memory leaks. The DCM rule "avoid-undisposed-instances" catches this before it becomes a bug.
🎥 Watch to learn how to fix it: youtu.be/cSiqXa8UMDM
That can cause memory leaks. The DCM rule "avoid-undisposed-instances" catches this before it becomes a bug.
🎥 Watch to learn how to fix it: youtu.be/cSiqXa8UMDM
🚫 Still using `MediaQuery.of(context)` in your #Flutter apps?
Relying on `MediaQuery.of` can lead to unnecessary widget rebuilds, impacting your app’s performance.
🎥 Watch to learn, how you can fix it: youtu.be/w5S8YRUPyak
Relying on `MediaQuery.of` can lead to unnecessary widget rebuilds, impacting your app’s performance.
🎥 Watch to learn, how you can fix it: youtu.be/w5S8YRUPyak
prefer-dedicated-media-query-methods (Rules of the Week)
YouTube video by DCM Analyzer
youtu.be
July 11, 2025 at 3:48 PM
🚫 Still using `MediaQuery.of(context)` in your #Flutter apps?
Relying on `MediaQuery.of` can lead to unnecessary widget rebuilds, impacting your app’s performance.
🎥 Watch to learn, how you can fix it: youtu.be/w5S8YRUPyak
Relying on `MediaQuery.of` can lead to unnecessary widget rebuilds, impacting your app’s performance.
🎥 Watch to learn, how you can fix it: youtu.be/w5S8YRUPyak
DCM v1.30.0 is out!
🔥 22 new rules
🚀 Baseline: support for code quality commands
📉 Baseline: sensitivity levels
📊 Dashboard enhancements
✅ Updated "recommended" preset
🎁 More rules in Free & Starter plans
& more…
Learn more 👉 dcm.dev/blog/2025/07...
🔥 22 new rules
🚀 Baseline: support for code quality commands
📉 Baseline: sensitivity levels
📊 Dashboard enhancements
✅ Updated "recommended" preset
🎁 More rules in Free & Starter plans
& more…
Learn more 👉 dcm.dev/blog/2025/07...
July 9, 2025 at 10:20 AM
DCM v1.30.0 is out!
🔥 22 new rules
🚀 Baseline: support for code quality commands
📉 Baseline: sensitivity levels
📊 Dashboard enhancements
✅ Updated "recommended" preset
🎁 More rules in Free & Starter plans
& more…
Learn more 👉 dcm.dev/blog/2025/07...
🔥 22 new rules
🚀 Baseline: support for code quality commands
📉 Baseline: sensitivity levels
📊 Dashboard enhancements
✅ Updated "recommended" preset
🎁 More rules in Free & Starter plans
& more…
Learn more 👉 dcm.dev/blog/2025/07...
Calling `super` methods in the wrong order can lead to bugs when some properties are not yet initialized or have already been disposed.
Check out our latest video to learn more: youtu.be/aOTMDvD4kVs
Check out our latest video to learn more: youtu.be/aOTMDvD4kVs
proper-super-calls (Rules of the Week)
YouTube video by DCM Analyzer
youtu.be
July 7, 2025 at 12:58 PM
Calling `super` methods in the wrong order can lead to bugs when some properties are not yet initialized or have already been disposed.
Check out our latest video to learn more: youtu.be/aOTMDvD4kVs
Check out our latest video to learn more: youtu.be/aOTMDvD4kVs
🎉 DCM was featured on #ObservableFlutter!
📺 Watch Craig and Dmitry dive into how DCM helps teams write more maintainable #Flutter and #Dart code.
🔗 Watch now: www.youtube.com/watch?v=ftPD...
📺 Watch Craig and Dmitry dive into how DCM helps teams write more maintainable #Flutter and #Dart code.
🔗 Watch now: www.youtube.com/watch?v=ftPD...
Dart Code Metrics | Observable Flutter #63
YouTube video by Flutter
www.youtube.com
July 2, 2025 at 7:04 PM
🎉 DCM was featured on #ObservableFlutter!
📺 Watch Craig and Dmitry dive into how DCM helps teams write more maintainable #Flutter and #Dart code.
🔗 Watch now: www.youtube.com/watch?v=ftPD...
📺 Watch Craig and Dmitry dive into how DCM helps teams write more maintainable #Flutter and #Dart code.
🔗 Watch now: www.youtube.com/watch?v=ftPD...