[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-flutter-dart-fix-runtime-errors":3,"mdc--h4fwv0-key":29,"related-repo-flutter-dart-fix-runtime-errors":1355,"related-org-flutter-dart-fix-runtime-errors":1430},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":19,"repoUrl":20,"updatedAt":21,"license":22,"forks":23,"topics":24,"repo":25,"sourceUrl":27,"mdContent":28},"dart-fix-runtime-errors","debug and fix Dart runtime errors","Uses get_runtime_errors and lsp to fetch an active stack trace, locate the failing line, apply a fix, and verify resolution via hot_reload.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"flutter","Flutter (Google)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fflutter.png",[12,16],{"name":13,"slug":14,"type":15},"Dart","dart","tag",{"name":17,"slug":18,"type":15},"Debugging","debugging",2664,"https:\u002F\u002Fgithub.com\u002Fflutter\u002Fagent-plugins","2026-07-15T05:22:22.622501",null,155,[],{"repoUrl":20,"stars":19,"forks":23,"topics":26,"description":22},[],"https:\u002F\u002Fgithub.com\u002Fflutter\u002Fagent-plugins\u002Ftree\u002FHEAD\u002Fskills\u002Fdart-fix-runtime-errors","---\nname: dart-fix-runtime-errors\ndescription: Uses get_runtime_errors and lsp to fetch an active stack trace, locate the failing line, apply a fix, and verify resolution via hot_reload.\nmetadata:\n  model: models\u002Fgemini-3.1-pro-preview\n  last_modified: Fri, 24 Apr 2026 15:13:22 GMT\n---\n# Resolving Dart Static Analysis Errors\n\n## Contents\n- [Core Concepts & Guidelines](#core-concepts--guidelines)\n  - [Type System & Soundness](#type-system--soundness)\n  - [Null Safety](#null-safety)\n  - [Error Handling](#error-handling)\n- [Workflows](#workflows)\n  - [Workflow: Static Analysis Resolution](#workflow-static-analysis-resolution)\n- [Examples](#examples)\n\n## Core Concepts & Guidelines\n\n### Type System & Soundness\nEnforce Dart's sound type system to prevent runtime invalid states.\n\n*   **Method Overrides:** Maintain sound return types (covariant) and parameter types (contravariant). Never tighten a parameter type in a subclass unless explicitly marked with the `covariant` keyword.\n*   **Generics & Collections:** Add explicit type annotations to generic classes (e.g., `List\u003CT>`, `Map\u003CK, V>`). Never assign a `List\u003Cdynamic>` to a typed list (e.g., `List\u003CCat>`).\n*   **Downcasting:** Avoid implicit downcasts from `dynamic`. Use explicit casts (e.g., `as List\u003CCat>`) when necessary, but ensure the underlying runtime type matches to prevent `TypeError` exceptions.\n*   **Strict Casts:** Enable `strict-casts: true` in `analysis_options.yaml` under `analyzer: language:` to force explicit casting and catch implicit downcast errors at compile time.\n\n### Null Safety\nEliminate static errors related to null safety by correctly managing variable initialization and nullability.\n\n*   **Modifiers:** Apply `?` for nullable types, `!` for null assertions, and `required` for named parameters that cannot be null.\n*   **Late Initialization:** Use the `late` keyword for non-nullable variables guaranteed to be initialized before use. Apply this specifically to top-level or instance variables where Dart's control flow analysis cannot definitively prove initialization.\n*   **Wildcards:** Use the `_` wildcard variable (Dart 3.7+) for non-binding local variables or parameters to avoid unused variable warnings.\n\n### Error Handling\nDistinguish between recoverable exceptions and unrecoverable errors.\n\n*   **Catching:** Catch `Exception` subtypes for recoverable failures.\n*   **Errors:** Never explicitly catch `Error` or its subtypes (e.g., `TypeError`, `ArgumentError`). Errors indicate programming bugs that must be fixed, not caught. Enforce this by enabling the `avoid_catching_errors` linter rule.\n*   **Rethrowing:** Use `rethrow` inside a `catch` block to propagate an exception while preserving its original stack trace.\n\n## Workflows\n\n### Workflow: Static Analysis Resolution\n\nUse this sequential workflow to identify, fix, and verify static analysis errors in a Dart project. Copy the checklist to track your progress.\n\n**Task Progress:**\n- [ ] 1. Run static analyzer.\n- [ ] 2. Apply automated fixes.\n- [ ] 3. Resolve remaining errors manually.\n- [ ] 4. Verify fixes (Feedback Loop).\n\n**1. Run static analyzer**\nExecute the Dart analyzer to identify all static errors in the target directory or file.\n```bash\ndart analyze . --fatal-infos\n```\n\n**2. Apply automated fixes**\nUse the `dart fix` tool to automatically resolve standard linting and analysis issues.\n```bash\n# Preview changes\ndart fix --dry-run\n# Apply changes\ndart fix --apply\n```\n\n**3. Resolve remaining errors manually**\nReview the remaining analyzer output and apply conditional logic based on the error type:\n\n*   **If the error is a Null Safety issue (e.g., \"Property cannot be accessed on a nullable receiver\"):**\n    *   Verify if the variable can logically be null.\n    *   If yes, use optional chaining (`?.`) or provide a fallback (`??`).\n    *   If no, and initialization is guaranteed elsewhere, mark the declaration with `late`.\n*   **If the error is a Type Mismatch (e.g., \"The argument type 'List\u003Cdynamic>' can't be assigned...\"):**\n    *   Trace the variable's initialization.\n    *   Add explicit generic type annotations to the instantiation (e.g., `\u003Cint>[]` instead of `[]`).\n*   **If the error is an Invalid Override (e.g., \"The parameter type doesn't match the overridden method\"):**\n    *   Widen the parameter type to match the superclass, OR\n    *   Add the `covariant` keyword to the parameter if tightening the type is intentionally required by the domain logic.\n\n**4. Verify fixes (Feedback Loop)**\nRun the validator. Review errors. Fix.\n```bash\ndart analyze .\ndart test\n```\n*   **If `dart analyze` reports errors:** Return to Step 3.\n*   **If `dart test` fails with a `TypeError`:** You have introduced an invalid explicit cast (`as T`) or accessed an uninitialized `late` variable. Locate the runtime failure and correct the type hierarchy or initialization order.\n\n## Examples\n\n### Example: Fixing Dynamic List Assignments\n**Input (Fails Static Analysis):**\n```dart\nvoid printInts(List\u003Cint> a) => print(a);\n\nvoid main() {\n  final list = []; \u002F\u002F Inferred as List\u003Cdynamic>\n  list.add(1);\n  list.add(2);\n  printInts(list); \u002F\u002F Error: List\u003Cdynamic> can't be assigned to List\u003Cint>\n}\n```\n\n**Output (Passes Static Analysis):**\n```dart\nvoid printInts(List\u003Cint> a) => print(a);\n\nvoid main() {\n  final list = \u003Cint>[]; \u002F\u002F Explicitly typed\n  list.add(1);\n  list.add(2);\n  printInts(list);\n}\n```\n\n### Example: Fixing Method Overrides (Contravariance)\n**Input (Fails Static Analysis):**\n```dart\nclass Animal {\n  void chase(Animal a) {}\n}\n\nclass Cat extends Animal {\n  @override\n  void chase(Mouse a) {} \u002F\u002F Error: Tightening parameter type\n}\n```\n\n**Output (Passes Static Analysis):**\n```dart\nclass Animal {\n  void chase(Animal a) {}\n}\n\nclass Cat extends Animal {\n  @override\n  void chase(covariant Mouse a) {} \u002F\u002F Explicitly marked covariant\n}\n```\n\n### Example: Fixing Null Safety with `late`\n**Input (Fails Static Analysis):**\n```dart\nclass Thermometer {\n  String temperature; \u002F\u002F Error: Non-nullable instance field must be initialized\n\n  void read() {\n    temperature = '20C';\n  }\n}\n```\n\n**Output (Passes Static Analysis):**\n```dart\nclass Thermometer {\n  late String temperature; \u002F\u002F Defers initialization check to runtime\n\n  void read() {\n    temperature = '20C';\n  }\n}\n```\n",{"data":30,"body":34},{"name":4,"description":6,"metadata":31},{"model":32,"last_modified":33},"models\u002Fgemini-3.1-pro-preview","Fri, 24 Apr 2026 15:13:22 GMT",{"type":35,"children":36},"root",[37,46,53,128,133,139,145,278,283,288,360,365,370,457,462,467,472,480,525,535,573,591,651,661,781,791,826,886,891,897,905,981,989,1054,1060,1067,1135,1142,1206,1217,1224,1285,1292,1349],{"type":38,"tag":39,"props":40,"children":42},"element","h1",{"id":41},"resolving-dart-static-analysis-errors",[43],{"type":44,"value":45},"text","Resolving Dart Static Analysis Errors",{"type":38,"tag":47,"props":48,"children":50},"h2",{"id":49},"contents",[51],{"type":44,"value":52},"Contents",{"type":38,"tag":54,"props":55,"children":56},"ul",{},[57,98,119],{"type":38,"tag":58,"props":59,"children":60},"li",{},[61,68],{"type":38,"tag":62,"props":63,"children":65},"a",{"href":64},"#core-concepts--guidelines",[66],{"type":44,"value":67},"Core Concepts & Guidelines",{"type":38,"tag":54,"props":69,"children":70},{},[71,80,89],{"type":38,"tag":58,"props":72,"children":73},{},[74],{"type":38,"tag":62,"props":75,"children":77},{"href":76},"#type-system--soundness",[78],{"type":44,"value":79},"Type System & Soundness",{"type":38,"tag":58,"props":81,"children":82},{},[83],{"type":38,"tag":62,"props":84,"children":86},{"href":85},"#null-safety",[87],{"type":44,"value":88},"Null Safety",{"type":38,"tag":58,"props":90,"children":91},{},[92],{"type":38,"tag":62,"props":93,"children":95},{"href":94},"#error-handling",[96],{"type":44,"value":97},"Error Handling",{"type":38,"tag":58,"props":99,"children":100},{},[101,107],{"type":38,"tag":62,"props":102,"children":104},{"href":103},"#workflows",[105],{"type":44,"value":106},"Workflows",{"type":38,"tag":54,"props":108,"children":109},{},[110],{"type":38,"tag":58,"props":111,"children":112},{},[113],{"type":38,"tag":62,"props":114,"children":116},{"href":115},"#workflow-static-analysis-resolution",[117],{"type":44,"value":118},"Workflow: Static Analysis Resolution",{"type":38,"tag":58,"props":120,"children":121},{},[122],{"type":38,"tag":62,"props":123,"children":125},{"href":124},"#examples",[126],{"type":44,"value":127},"Examples",{"type":38,"tag":47,"props":129,"children":131},{"id":130},"core-concepts-guidelines",[132],{"type":44,"value":67},{"type":38,"tag":134,"props":135,"children":137},"h3",{"id":136},"type-system-soundness",[138],{"type":44,"value":79},{"type":38,"tag":140,"props":141,"children":142},"p",{},[143],{"type":44,"value":144},"Enforce Dart's sound type system to prevent runtime invalid states.",{"type":38,"tag":54,"props":146,"children":147},{},[148,168,210,244],{"type":38,"tag":58,"props":149,"children":150},{},[151,157,159,166],{"type":38,"tag":152,"props":153,"children":154},"strong",{},[155],{"type":44,"value":156},"Method Overrides:",{"type":44,"value":158}," Maintain sound return types (covariant) and parameter types (contravariant). Never tighten a parameter type in a subclass unless explicitly marked with the ",{"type":38,"tag":160,"props":161,"children":163},"code",{"className":162},[],[164],{"type":44,"value":165},"covariant",{"type":44,"value":167}," keyword.",{"type":38,"tag":58,"props":169,"children":170},{},[171,176,178,184,186,192,194,200,202,208],{"type":38,"tag":152,"props":172,"children":173},{},[174],{"type":44,"value":175},"Generics & Collections:",{"type":44,"value":177}," Add explicit type annotations to generic classes (e.g., ",{"type":38,"tag":160,"props":179,"children":181},{"className":180},[],[182],{"type":44,"value":183},"List\u003CT>",{"type":44,"value":185},", ",{"type":38,"tag":160,"props":187,"children":189},{"className":188},[],[190],{"type":44,"value":191},"Map\u003CK, V>",{"type":44,"value":193},"). Never assign a ",{"type":38,"tag":160,"props":195,"children":197},{"className":196},[],[198],{"type":44,"value":199},"List\u003Cdynamic>",{"type":44,"value":201}," to a typed list (e.g., ",{"type":38,"tag":160,"props":203,"children":205},{"className":204},[],[206],{"type":44,"value":207},"List\u003CCat>",{"type":44,"value":209},").",{"type":38,"tag":58,"props":211,"children":212},{},[213,218,220,226,228,234,236,242],{"type":38,"tag":152,"props":214,"children":215},{},[216],{"type":44,"value":217},"Downcasting:",{"type":44,"value":219}," Avoid implicit downcasts from ",{"type":38,"tag":160,"props":221,"children":223},{"className":222},[],[224],{"type":44,"value":225},"dynamic",{"type":44,"value":227},". Use explicit casts (e.g., ",{"type":38,"tag":160,"props":229,"children":231},{"className":230},[],[232],{"type":44,"value":233},"as List\u003CCat>",{"type":44,"value":235},") when necessary, but ensure the underlying runtime type matches to prevent ",{"type":38,"tag":160,"props":237,"children":239},{"className":238},[],[240],{"type":44,"value":241},"TypeError",{"type":44,"value":243}," exceptions.",{"type":38,"tag":58,"props":245,"children":246},{},[247,252,254,260,262,268,270,276],{"type":38,"tag":152,"props":248,"children":249},{},[250],{"type":44,"value":251},"Strict Casts:",{"type":44,"value":253}," Enable ",{"type":38,"tag":160,"props":255,"children":257},{"className":256},[],[258],{"type":44,"value":259},"strict-casts: true",{"type":44,"value":261}," in ",{"type":38,"tag":160,"props":263,"children":265},{"className":264},[],[266],{"type":44,"value":267},"analysis_options.yaml",{"type":44,"value":269}," under ",{"type":38,"tag":160,"props":271,"children":273},{"className":272},[],[274],{"type":44,"value":275},"analyzer: language:",{"type":44,"value":277}," to force explicit casting and catch implicit downcast errors at compile time.",{"type":38,"tag":134,"props":279,"children":281},{"id":280},"null-safety",[282],{"type":44,"value":88},{"type":38,"tag":140,"props":284,"children":285},{},[286],{"type":44,"value":287},"Eliminate static errors related to null safety by correctly managing variable initialization and nullability.",{"type":38,"tag":54,"props":289,"children":290},{},[291,325,343],{"type":38,"tag":58,"props":292,"children":293},{},[294,299,301,307,309,315,317,323],{"type":38,"tag":152,"props":295,"children":296},{},[297],{"type":44,"value":298},"Modifiers:",{"type":44,"value":300}," Apply ",{"type":38,"tag":160,"props":302,"children":304},{"className":303},[],[305],{"type":44,"value":306},"?",{"type":44,"value":308}," for nullable types, ",{"type":38,"tag":160,"props":310,"children":312},{"className":311},[],[313],{"type":44,"value":314},"!",{"type":44,"value":316}," for null assertions, and ",{"type":38,"tag":160,"props":318,"children":320},{"className":319},[],[321],{"type":44,"value":322},"required",{"type":44,"value":324}," for named parameters that cannot be null.",{"type":38,"tag":58,"props":326,"children":327},{},[328,333,335,341],{"type":38,"tag":152,"props":329,"children":330},{},[331],{"type":44,"value":332},"Late Initialization:",{"type":44,"value":334}," Use the ",{"type":38,"tag":160,"props":336,"children":338},{"className":337},[],[339],{"type":44,"value":340},"late",{"type":44,"value":342}," keyword for non-nullable variables guaranteed to be initialized before use. Apply this specifically to top-level or instance variables where Dart's control flow analysis cannot definitively prove initialization.",{"type":38,"tag":58,"props":344,"children":345},{},[346,351,352,358],{"type":38,"tag":152,"props":347,"children":348},{},[349],{"type":44,"value":350},"Wildcards:",{"type":44,"value":334},{"type":38,"tag":160,"props":353,"children":355},{"className":354},[],[356],{"type":44,"value":357},"_",{"type":44,"value":359}," wildcard variable (Dart 3.7+) for non-binding local variables or parameters to avoid unused variable warnings.",{"type":38,"tag":134,"props":361,"children":363},{"id":362},"error-handling",[364],{"type":44,"value":97},{"type":38,"tag":140,"props":366,"children":367},{},[368],{"type":44,"value":369},"Distinguish between recoverable exceptions and unrecoverable errors.",{"type":38,"tag":54,"props":371,"children":372},{},[373,391,431],{"type":38,"tag":58,"props":374,"children":375},{},[376,381,383,389],{"type":38,"tag":152,"props":377,"children":378},{},[379],{"type":44,"value":380},"Catching:",{"type":44,"value":382}," Catch ",{"type":38,"tag":160,"props":384,"children":386},{"className":385},[],[387],{"type":44,"value":388},"Exception",{"type":44,"value":390}," subtypes for recoverable failures.",{"type":38,"tag":58,"props":392,"children":393},{},[394,399,401,407,409,414,415,421,423,429],{"type":38,"tag":152,"props":395,"children":396},{},[397],{"type":44,"value":398},"Errors:",{"type":44,"value":400}," Never explicitly catch ",{"type":38,"tag":160,"props":402,"children":404},{"className":403},[],[405],{"type":44,"value":406},"Error",{"type":44,"value":408}," or its subtypes (e.g., ",{"type":38,"tag":160,"props":410,"children":412},{"className":411},[],[413],{"type":44,"value":241},{"type":44,"value":185},{"type":38,"tag":160,"props":416,"children":418},{"className":417},[],[419],{"type":44,"value":420},"ArgumentError",{"type":44,"value":422},"). Errors indicate programming bugs that must be fixed, not caught. Enforce this by enabling the ",{"type":38,"tag":160,"props":424,"children":426},{"className":425},[],[427],{"type":44,"value":428},"avoid_catching_errors",{"type":44,"value":430}," linter rule.",{"type":38,"tag":58,"props":432,"children":433},{},[434,439,441,447,449,455],{"type":38,"tag":152,"props":435,"children":436},{},[437],{"type":44,"value":438},"Rethrowing:",{"type":44,"value":440}," Use ",{"type":38,"tag":160,"props":442,"children":444},{"className":443},[],[445],{"type":44,"value":446},"rethrow",{"type":44,"value":448}," inside a ",{"type":38,"tag":160,"props":450,"children":452},{"className":451},[],[453],{"type":44,"value":454},"catch",{"type":44,"value":456}," block to propagate an exception while preserving its original stack trace.",{"type":38,"tag":47,"props":458,"children":460},{"id":459},"workflows",[461],{"type":44,"value":106},{"type":38,"tag":134,"props":463,"children":465},{"id":464},"workflow-static-analysis-resolution",[466],{"type":44,"value":118},{"type":38,"tag":140,"props":468,"children":469},{},[470],{"type":44,"value":471},"Use this sequential workflow to identify, fix, and verify static analysis errors in a Dart project. Copy the checklist to track your progress.",{"type":38,"tag":140,"props":473,"children":474},{},[475],{"type":38,"tag":152,"props":476,"children":477},{},[478],{"type":44,"value":479},"Task Progress:",{"type":38,"tag":54,"props":481,"children":484},{"className":482},[483],"contains-task-list",[485,498,507,516],{"type":38,"tag":58,"props":486,"children":489},{"className":487},[488],"task-list-item",[490,496],{"type":38,"tag":491,"props":492,"children":495},"input",{"disabled":493,"type":494},true,"checkbox",[],{"type":44,"value":497}," 1. Run static analyzer.",{"type":38,"tag":58,"props":499,"children":501},{"className":500},[488],[502,505],{"type":38,"tag":491,"props":503,"children":504},{"disabled":493,"type":494},[],{"type":44,"value":506}," 2. Apply automated fixes.",{"type":38,"tag":58,"props":508,"children":510},{"className":509},[488],[511,514],{"type":38,"tag":491,"props":512,"children":513},{"disabled":493,"type":494},[],{"type":44,"value":515}," 3. Resolve remaining errors manually.",{"type":38,"tag":58,"props":517,"children":519},{"className":518},[488],[520,523],{"type":38,"tag":491,"props":521,"children":522},{"disabled":493,"type":494},[],{"type":44,"value":524}," 4. Verify fixes (Feedback Loop).",{"type":38,"tag":140,"props":526,"children":527},{},[528,533],{"type":38,"tag":152,"props":529,"children":530},{},[531],{"type":44,"value":532},"1. Run static analyzer",{"type":44,"value":534},"\nExecute the Dart analyzer to identify all static errors in the target directory or file.",{"type":38,"tag":536,"props":537,"children":542},"pre",{"className":538,"code":539,"language":540,"meta":541,"style":541},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dart analyze . --fatal-infos\n","bash","",[543],{"type":38,"tag":160,"props":544,"children":545},{"__ignoreMap":541},[546],{"type":38,"tag":547,"props":548,"children":551},"span",{"class":549,"line":550},"line",1,[552,557,563,568],{"type":38,"tag":547,"props":553,"children":555},{"style":554},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[556],{"type":44,"value":14},{"type":38,"tag":547,"props":558,"children":560},{"style":559},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[561],{"type":44,"value":562}," analyze",{"type":38,"tag":547,"props":564,"children":565},{"style":559},[566],{"type":44,"value":567}," .",{"type":38,"tag":547,"props":569,"children":570},{"style":559},[571],{"type":44,"value":572}," --fatal-infos\n",{"type":38,"tag":140,"props":574,"children":575},{},[576,581,583,589],{"type":38,"tag":152,"props":577,"children":578},{},[579],{"type":44,"value":580},"2. Apply automated fixes",{"type":44,"value":582},"\nUse the ",{"type":38,"tag":160,"props":584,"children":586},{"className":585},[],[587],{"type":44,"value":588},"dart fix",{"type":44,"value":590}," tool to automatically resolve standard linting and analysis issues.",{"type":38,"tag":536,"props":592,"children":594},{"className":538,"code":593,"language":540,"meta":541,"style":541},"# Preview changes\ndart fix --dry-run\n# Apply changes\ndart fix --apply\n",[595],{"type":38,"tag":160,"props":596,"children":597},{"__ignoreMap":541},[598,607,625,634],{"type":38,"tag":547,"props":599,"children":600},{"class":549,"line":550},[601],{"type":38,"tag":547,"props":602,"children":604},{"style":603},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[605],{"type":44,"value":606},"# Preview changes\n",{"type":38,"tag":547,"props":608,"children":610},{"class":549,"line":609},2,[611,615,620],{"type":38,"tag":547,"props":612,"children":613},{"style":554},[614],{"type":44,"value":14},{"type":38,"tag":547,"props":616,"children":617},{"style":559},[618],{"type":44,"value":619}," fix",{"type":38,"tag":547,"props":621,"children":622},{"style":559},[623],{"type":44,"value":624}," --dry-run\n",{"type":38,"tag":547,"props":626,"children":628},{"class":549,"line":627},3,[629],{"type":38,"tag":547,"props":630,"children":631},{"style":603},[632],{"type":44,"value":633},"# Apply changes\n",{"type":38,"tag":547,"props":635,"children":637},{"class":549,"line":636},4,[638,642,646],{"type":38,"tag":547,"props":639,"children":640},{"style":554},[641],{"type":44,"value":14},{"type":38,"tag":547,"props":643,"children":644},{"style":559},[645],{"type":44,"value":619},{"type":38,"tag":547,"props":647,"children":648},{"style":559},[649],{"type":44,"value":650}," --apply\n",{"type":38,"tag":140,"props":652,"children":653},{},[654,659],{"type":38,"tag":152,"props":655,"children":656},{},[657],{"type":44,"value":658},"3. Resolve remaining errors manually",{"type":44,"value":660},"\nReview the remaining analyzer output and apply conditional logic based on the error type:",{"type":38,"tag":54,"props":662,"children":663},{},[664,712,753],{"type":38,"tag":58,"props":665,"children":666},{},[667,672],{"type":38,"tag":152,"props":668,"children":669},{},[670],{"type":44,"value":671},"If the error is a Null Safety issue (e.g., \"Property cannot be accessed on a nullable receiver\"):",{"type":38,"tag":54,"props":673,"children":674},{},[675,680,700],{"type":38,"tag":58,"props":676,"children":677},{},[678],{"type":44,"value":679},"Verify if the variable can logically be null.",{"type":38,"tag":58,"props":681,"children":682},{},[683,685,691,693,699],{"type":44,"value":684},"If yes, use optional chaining (",{"type":38,"tag":160,"props":686,"children":688},{"className":687},[],[689],{"type":44,"value":690},"?.",{"type":44,"value":692},") or provide a fallback (",{"type":38,"tag":160,"props":694,"children":696},{"className":695},[],[697],{"type":44,"value":698},"??",{"type":44,"value":209},{"type":38,"tag":58,"props":701,"children":702},{},[703,705,710],{"type":44,"value":704},"If no, and initialization is guaranteed elsewhere, mark the declaration with ",{"type":38,"tag":160,"props":706,"children":708},{"className":707},[],[709],{"type":44,"value":340},{"type":44,"value":711},".",{"type":38,"tag":58,"props":713,"children":714},{},[715,725],{"type":38,"tag":152,"props":716,"children":717},{},[718,720],{"type":44,"value":719},"If the error is a Type Mismatch (e.g., \"The argument type 'List",{"type":38,"tag":225,"props":721,"children":722},{},[723],{"type":44,"value":724},"' can't be assigned...\"):",{"type":38,"tag":54,"props":726,"children":727},{},[728,733],{"type":38,"tag":58,"props":729,"children":730},{},[731],{"type":44,"value":732},"Trace the variable's initialization.",{"type":38,"tag":58,"props":734,"children":735},{},[736,738,744,746,752],{"type":44,"value":737},"Add explicit generic type annotations to the instantiation (e.g., ",{"type":38,"tag":160,"props":739,"children":741},{"className":740},[],[742],{"type":44,"value":743},"\u003Cint>[]",{"type":44,"value":745}," instead of ",{"type":38,"tag":160,"props":747,"children":749},{"className":748},[],[750],{"type":44,"value":751},"[]",{"type":44,"value":209},{"type":38,"tag":58,"props":754,"children":755},{},[756,761],{"type":38,"tag":152,"props":757,"children":758},{},[759],{"type":44,"value":760},"If the error is an Invalid Override (e.g., \"The parameter type doesn't match the overridden method\"):",{"type":38,"tag":54,"props":762,"children":763},{},[764,769],{"type":38,"tag":58,"props":765,"children":766},{},[767],{"type":44,"value":768},"Widen the parameter type to match the superclass, OR",{"type":38,"tag":58,"props":770,"children":771},{},[772,774,779],{"type":44,"value":773},"Add the ",{"type":38,"tag":160,"props":775,"children":777},{"className":776},[],[778],{"type":44,"value":165},{"type":44,"value":780}," keyword to the parameter if tightening the type is intentionally required by the domain logic.",{"type":38,"tag":140,"props":782,"children":783},{},[784,789],{"type":38,"tag":152,"props":785,"children":786},{},[787],{"type":44,"value":788},"4. Verify fixes (Feedback Loop)",{"type":44,"value":790},"\nRun the validator. Review errors. Fix.",{"type":38,"tag":536,"props":792,"children":794},{"className":538,"code":793,"language":540,"meta":541,"style":541},"dart analyze .\ndart test\n",[795],{"type":38,"tag":160,"props":796,"children":797},{"__ignoreMap":541},[798,814],{"type":38,"tag":547,"props":799,"children":800},{"class":549,"line":550},[801,805,809],{"type":38,"tag":547,"props":802,"children":803},{"style":554},[804],{"type":44,"value":14},{"type":38,"tag":547,"props":806,"children":807},{"style":559},[808],{"type":44,"value":562},{"type":38,"tag":547,"props":810,"children":811},{"style":559},[812],{"type":44,"value":813}," .\n",{"type":38,"tag":547,"props":815,"children":816},{"class":549,"line":609},[817,821],{"type":38,"tag":547,"props":818,"children":819},{"style":554},[820],{"type":44,"value":14},{"type":38,"tag":547,"props":822,"children":823},{"style":559},[824],{"type":44,"value":825}," test\n",{"type":38,"tag":54,"props":827,"children":828},{},[829,847],{"type":38,"tag":58,"props":830,"children":831},{},[832,845],{"type":38,"tag":152,"props":833,"children":834},{},[835,837,843],{"type":44,"value":836},"If ",{"type":38,"tag":160,"props":838,"children":840},{"className":839},[],[841],{"type":44,"value":842},"dart analyze",{"type":44,"value":844}," reports errors:",{"type":44,"value":846}," Return to Step 3.",{"type":38,"tag":58,"props":848,"children":849},{},[850,869,871,877,879,884],{"type":38,"tag":152,"props":851,"children":852},{},[853,854,860,862,867],{"type":44,"value":836},{"type":38,"tag":160,"props":855,"children":857},{"className":856},[],[858],{"type":44,"value":859},"dart test",{"type":44,"value":861}," fails with a ",{"type":38,"tag":160,"props":863,"children":865},{"className":864},[],[866],{"type":44,"value":241},{"type":44,"value":868},":",{"type":44,"value":870}," You have introduced an invalid explicit cast (",{"type":38,"tag":160,"props":872,"children":874},{"className":873},[],[875],{"type":44,"value":876},"as T",{"type":44,"value":878},") or accessed an uninitialized ",{"type":38,"tag":160,"props":880,"children":882},{"className":881},[],[883],{"type":44,"value":340},{"type":44,"value":885}," variable. Locate the runtime failure and correct the type hierarchy or initialization order.",{"type":38,"tag":47,"props":887,"children":889},{"id":888},"examples",[890],{"type":44,"value":127},{"type":38,"tag":134,"props":892,"children":894},{"id":893},"example-fixing-dynamic-list-assignments",[895],{"type":44,"value":896},"Example: Fixing Dynamic List Assignments",{"type":38,"tag":140,"props":898,"children":899},{},[900],{"type":38,"tag":152,"props":901,"children":902},{},[903],{"type":44,"value":904},"Input (Fails Static Analysis):",{"type":38,"tag":536,"props":906,"children":909},{"className":907,"code":908,"language":14,"meta":541,"style":541},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","void printInts(List\u003Cint> a) => print(a);\n\nvoid main() {\n  final list = []; \u002F\u002F Inferred as List\u003Cdynamic>\n  list.add(1);\n  list.add(2);\n  printInts(list); \u002F\u002F Error: List\u003Cdynamic> can't be assigned to List\u003Cint>\n}\n",[910],{"type":38,"tag":160,"props":911,"children":912},{"__ignoreMap":541},[913,921,929,937,945,954,963,972],{"type":38,"tag":547,"props":914,"children":915},{"class":549,"line":550},[916],{"type":38,"tag":547,"props":917,"children":918},{},[919],{"type":44,"value":920},"void printInts(List\u003Cint> a) => print(a);\n",{"type":38,"tag":547,"props":922,"children":923},{"class":549,"line":609},[924],{"type":38,"tag":547,"props":925,"children":926},{"emptyLinePlaceholder":493},[927],{"type":44,"value":928},"\n",{"type":38,"tag":547,"props":930,"children":931},{"class":549,"line":627},[932],{"type":38,"tag":547,"props":933,"children":934},{},[935],{"type":44,"value":936},"void main() {\n",{"type":38,"tag":547,"props":938,"children":939},{"class":549,"line":636},[940],{"type":38,"tag":547,"props":941,"children":942},{},[943],{"type":44,"value":944},"  final list = []; \u002F\u002F Inferred as List\u003Cdynamic>\n",{"type":38,"tag":547,"props":946,"children":948},{"class":549,"line":947},5,[949],{"type":38,"tag":547,"props":950,"children":951},{},[952],{"type":44,"value":953},"  list.add(1);\n",{"type":38,"tag":547,"props":955,"children":957},{"class":549,"line":956},6,[958],{"type":38,"tag":547,"props":959,"children":960},{},[961],{"type":44,"value":962},"  list.add(2);\n",{"type":38,"tag":547,"props":964,"children":966},{"class":549,"line":965},7,[967],{"type":38,"tag":547,"props":968,"children":969},{},[970],{"type":44,"value":971},"  printInts(list); \u002F\u002F Error: List\u003Cdynamic> can't be assigned to List\u003Cint>\n",{"type":38,"tag":547,"props":973,"children":975},{"class":549,"line":974},8,[976],{"type":38,"tag":547,"props":977,"children":978},{},[979],{"type":44,"value":980},"}\n",{"type":38,"tag":140,"props":982,"children":983},{},[984],{"type":38,"tag":152,"props":985,"children":986},{},[987],{"type":44,"value":988},"Output (Passes Static Analysis):",{"type":38,"tag":536,"props":990,"children":992},{"className":907,"code":991,"language":14,"meta":541,"style":541},"void printInts(List\u003Cint> a) => print(a);\n\nvoid main() {\n  final list = \u003Cint>[]; \u002F\u002F Explicitly typed\n  list.add(1);\n  list.add(2);\n  printInts(list);\n}\n",[993],{"type":38,"tag":160,"props":994,"children":995},{"__ignoreMap":541},[996,1003,1010,1017,1025,1032,1039,1047],{"type":38,"tag":547,"props":997,"children":998},{"class":549,"line":550},[999],{"type":38,"tag":547,"props":1000,"children":1001},{},[1002],{"type":44,"value":920},{"type":38,"tag":547,"props":1004,"children":1005},{"class":549,"line":609},[1006],{"type":38,"tag":547,"props":1007,"children":1008},{"emptyLinePlaceholder":493},[1009],{"type":44,"value":928},{"type":38,"tag":547,"props":1011,"children":1012},{"class":549,"line":627},[1013],{"type":38,"tag":547,"props":1014,"children":1015},{},[1016],{"type":44,"value":936},{"type":38,"tag":547,"props":1018,"children":1019},{"class":549,"line":636},[1020],{"type":38,"tag":547,"props":1021,"children":1022},{},[1023],{"type":44,"value":1024},"  final list = \u003Cint>[]; \u002F\u002F Explicitly typed\n",{"type":38,"tag":547,"props":1026,"children":1027},{"class":549,"line":947},[1028],{"type":38,"tag":547,"props":1029,"children":1030},{},[1031],{"type":44,"value":953},{"type":38,"tag":547,"props":1033,"children":1034},{"class":549,"line":956},[1035],{"type":38,"tag":547,"props":1036,"children":1037},{},[1038],{"type":44,"value":962},{"type":38,"tag":547,"props":1040,"children":1041},{"class":549,"line":965},[1042],{"type":38,"tag":547,"props":1043,"children":1044},{},[1045],{"type":44,"value":1046},"  printInts(list);\n",{"type":38,"tag":547,"props":1048,"children":1049},{"class":549,"line":974},[1050],{"type":38,"tag":547,"props":1051,"children":1052},{},[1053],{"type":44,"value":980},{"type":38,"tag":134,"props":1055,"children":1057},{"id":1056},"example-fixing-method-overrides-contravariance",[1058],{"type":44,"value":1059},"Example: Fixing Method Overrides (Contravariance)",{"type":38,"tag":140,"props":1061,"children":1062},{},[1063],{"type":38,"tag":152,"props":1064,"children":1065},{},[1066],{"type":44,"value":904},{"type":38,"tag":536,"props":1068,"children":1070},{"className":907,"code":1069,"language":14,"meta":541,"style":541},"class Animal {\n  void chase(Animal a) {}\n}\n\nclass Cat extends Animal {\n  @override\n  void chase(Mouse a) {} \u002F\u002F Error: Tightening parameter type\n}\n",[1071],{"type":38,"tag":160,"props":1072,"children":1073},{"__ignoreMap":541},[1074,1082,1090,1097,1104,1112,1120,1128],{"type":38,"tag":547,"props":1075,"children":1076},{"class":549,"line":550},[1077],{"type":38,"tag":547,"props":1078,"children":1079},{},[1080],{"type":44,"value":1081},"class Animal {\n",{"type":38,"tag":547,"props":1083,"children":1084},{"class":549,"line":609},[1085],{"type":38,"tag":547,"props":1086,"children":1087},{},[1088],{"type":44,"value":1089},"  void chase(Animal a) {}\n",{"type":38,"tag":547,"props":1091,"children":1092},{"class":549,"line":627},[1093],{"type":38,"tag":547,"props":1094,"children":1095},{},[1096],{"type":44,"value":980},{"type":38,"tag":547,"props":1098,"children":1099},{"class":549,"line":636},[1100],{"type":38,"tag":547,"props":1101,"children":1102},{"emptyLinePlaceholder":493},[1103],{"type":44,"value":928},{"type":38,"tag":547,"props":1105,"children":1106},{"class":549,"line":947},[1107],{"type":38,"tag":547,"props":1108,"children":1109},{},[1110],{"type":44,"value":1111},"class Cat extends Animal {\n",{"type":38,"tag":547,"props":1113,"children":1114},{"class":549,"line":956},[1115],{"type":38,"tag":547,"props":1116,"children":1117},{},[1118],{"type":44,"value":1119},"  @override\n",{"type":38,"tag":547,"props":1121,"children":1122},{"class":549,"line":965},[1123],{"type":38,"tag":547,"props":1124,"children":1125},{},[1126],{"type":44,"value":1127},"  void chase(Mouse a) {} \u002F\u002F Error: Tightening parameter type\n",{"type":38,"tag":547,"props":1129,"children":1130},{"class":549,"line":974},[1131],{"type":38,"tag":547,"props":1132,"children":1133},{},[1134],{"type":44,"value":980},{"type":38,"tag":140,"props":1136,"children":1137},{},[1138],{"type":38,"tag":152,"props":1139,"children":1140},{},[1141],{"type":44,"value":988},{"type":38,"tag":536,"props":1143,"children":1145},{"className":907,"code":1144,"language":14,"meta":541,"style":541},"class Animal {\n  void chase(Animal a) {}\n}\n\nclass Cat extends Animal {\n  @override\n  void chase(covariant Mouse a) {} \u002F\u002F Explicitly marked covariant\n}\n",[1146],{"type":38,"tag":160,"props":1147,"children":1148},{"__ignoreMap":541},[1149,1156,1163,1170,1177,1184,1191,1199],{"type":38,"tag":547,"props":1150,"children":1151},{"class":549,"line":550},[1152],{"type":38,"tag":547,"props":1153,"children":1154},{},[1155],{"type":44,"value":1081},{"type":38,"tag":547,"props":1157,"children":1158},{"class":549,"line":609},[1159],{"type":38,"tag":547,"props":1160,"children":1161},{},[1162],{"type":44,"value":1089},{"type":38,"tag":547,"props":1164,"children":1165},{"class":549,"line":627},[1166],{"type":38,"tag":547,"props":1167,"children":1168},{},[1169],{"type":44,"value":980},{"type":38,"tag":547,"props":1171,"children":1172},{"class":549,"line":636},[1173],{"type":38,"tag":547,"props":1174,"children":1175},{"emptyLinePlaceholder":493},[1176],{"type":44,"value":928},{"type":38,"tag":547,"props":1178,"children":1179},{"class":549,"line":947},[1180],{"type":38,"tag":547,"props":1181,"children":1182},{},[1183],{"type":44,"value":1111},{"type":38,"tag":547,"props":1185,"children":1186},{"class":549,"line":956},[1187],{"type":38,"tag":547,"props":1188,"children":1189},{},[1190],{"type":44,"value":1119},{"type":38,"tag":547,"props":1192,"children":1193},{"class":549,"line":965},[1194],{"type":38,"tag":547,"props":1195,"children":1196},{},[1197],{"type":44,"value":1198},"  void chase(covariant Mouse a) {} \u002F\u002F Explicitly marked covariant\n",{"type":38,"tag":547,"props":1200,"children":1201},{"class":549,"line":974},[1202],{"type":38,"tag":547,"props":1203,"children":1204},{},[1205],{"type":44,"value":980},{"type":38,"tag":134,"props":1207,"children":1209},{"id":1208},"example-fixing-null-safety-with-late",[1210,1212],{"type":44,"value":1211},"Example: Fixing Null Safety with ",{"type":38,"tag":160,"props":1213,"children":1215},{"className":1214},[],[1216],{"type":44,"value":340},{"type":38,"tag":140,"props":1218,"children":1219},{},[1220],{"type":38,"tag":152,"props":1221,"children":1222},{},[1223],{"type":44,"value":904},{"type":38,"tag":536,"props":1225,"children":1227},{"className":907,"code":1226,"language":14,"meta":541,"style":541},"class Thermometer {\n  String temperature; \u002F\u002F Error: Non-nullable instance field must be initialized\n\n  void read() {\n    temperature = '20C';\n  }\n}\n",[1228],{"type":38,"tag":160,"props":1229,"children":1230},{"__ignoreMap":541},[1231,1239,1247,1254,1262,1270,1278],{"type":38,"tag":547,"props":1232,"children":1233},{"class":549,"line":550},[1234],{"type":38,"tag":547,"props":1235,"children":1236},{},[1237],{"type":44,"value":1238},"class Thermometer {\n",{"type":38,"tag":547,"props":1240,"children":1241},{"class":549,"line":609},[1242],{"type":38,"tag":547,"props":1243,"children":1244},{},[1245],{"type":44,"value":1246},"  String temperature; \u002F\u002F Error: Non-nullable instance field must be initialized\n",{"type":38,"tag":547,"props":1248,"children":1249},{"class":549,"line":627},[1250],{"type":38,"tag":547,"props":1251,"children":1252},{"emptyLinePlaceholder":493},[1253],{"type":44,"value":928},{"type":38,"tag":547,"props":1255,"children":1256},{"class":549,"line":636},[1257],{"type":38,"tag":547,"props":1258,"children":1259},{},[1260],{"type":44,"value":1261},"  void read() {\n",{"type":38,"tag":547,"props":1263,"children":1264},{"class":549,"line":947},[1265],{"type":38,"tag":547,"props":1266,"children":1267},{},[1268],{"type":44,"value":1269},"    temperature = '20C';\n",{"type":38,"tag":547,"props":1271,"children":1272},{"class":549,"line":956},[1273],{"type":38,"tag":547,"props":1274,"children":1275},{},[1276],{"type":44,"value":1277},"  }\n",{"type":38,"tag":547,"props":1279,"children":1280},{"class":549,"line":965},[1281],{"type":38,"tag":547,"props":1282,"children":1283},{},[1284],{"type":44,"value":980},{"type":38,"tag":140,"props":1286,"children":1287},{},[1288],{"type":38,"tag":152,"props":1289,"children":1290},{},[1291],{"type":44,"value":988},{"type":38,"tag":536,"props":1293,"children":1295},{"className":907,"code":1294,"language":14,"meta":541,"style":541},"class Thermometer {\n  late String temperature; \u002F\u002F Defers initialization check to runtime\n\n  void read() {\n    temperature = '20C';\n  }\n}\n",[1296],{"type":38,"tag":160,"props":1297,"children":1298},{"__ignoreMap":541},[1299,1306,1314,1321,1328,1335,1342],{"type":38,"tag":547,"props":1300,"children":1301},{"class":549,"line":550},[1302],{"type":38,"tag":547,"props":1303,"children":1304},{},[1305],{"type":44,"value":1238},{"type":38,"tag":547,"props":1307,"children":1308},{"class":549,"line":609},[1309],{"type":38,"tag":547,"props":1310,"children":1311},{},[1312],{"type":44,"value":1313},"  late String temperature; \u002F\u002F Defers initialization check to runtime\n",{"type":38,"tag":547,"props":1315,"children":1316},{"class":549,"line":627},[1317],{"type":38,"tag":547,"props":1318,"children":1319},{"emptyLinePlaceholder":493},[1320],{"type":44,"value":928},{"type":38,"tag":547,"props":1322,"children":1323},{"class":549,"line":636},[1324],{"type":38,"tag":547,"props":1325,"children":1326},{},[1327],{"type":44,"value":1261},{"type":38,"tag":547,"props":1329,"children":1330},{"class":549,"line":947},[1331],{"type":38,"tag":547,"props":1332,"children":1333},{},[1334],{"type":44,"value":1269},{"type":38,"tag":547,"props":1336,"children":1337},{"class":549,"line":956},[1338],{"type":38,"tag":547,"props":1339,"children":1340},{},[1341],{"type":44,"value":1277},{"type":38,"tag":547,"props":1343,"children":1344},{"class":549,"line":965},[1345],{"type":38,"tag":547,"props":1346,"children":1347},{},[1348],{"type":44,"value":980},{"type":38,"tag":1350,"props":1351,"children":1352},"style",{},[1353],{"type":44,"value":1354},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1356,"total":1429},[1357,1368,1379,1391,1396,1405,1417],{"slug":1358,"name":1358,"fn":1359,"description":1360,"org":1361,"tags":1362,"stars":19,"repoUrl":20,"updatedAt":1367},"dart-add-unit-test","write unit tests for Dart code","Write and organize unit tests for functions, methods, and classes using `package:test`. Use when creating new logic or fixing bugs to ensure code remains correct and regression-free.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1363,1364],{"name":13,"slug":14,"type":15},{"name":1365,"slug":1366,"type":15},"Testing","testing","2026-07-15T05:22:40.104823",{"slug":1369,"name":1369,"fn":1370,"description":1371,"org":1372,"tags":1373,"stars":19,"repoUrl":20,"updatedAt":1378},"dart-build-cli-app","build Dart command line applications","Entrypoint structure, exit codes, cross-platform scripts. Use when building command line utilities, scripts, or applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1374,1377],{"name":1375,"slug":1376,"type":15},"CLI","cli",{"name":13,"slug":14,"type":15},"2026-07-15T05:22:18.863572",{"slug":1380,"name":1380,"fn":1381,"description":1382,"org":1383,"tags":1384,"stars":19,"repoUrl":20,"updatedAt":1390},"dart-collect-coverage","collect Dart test coverage reports","Collect coverage using the coverage packge and create an LCOV report",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1385,1386,1389],{"name":13,"slug":14,"type":15},{"name":1387,"slug":1388,"type":15},"Reporting","reporting",{"name":1365,"slug":1366,"type":15},"2026-07-15T05:22:21.38636",{"slug":4,"name":4,"fn":5,"description":6,"org":1392,"tags":1393,"stars":19,"repoUrl":20,"updatedAt":21},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1394,1395],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"slug":1397,"name":1397,"fn":1398,"description":1399,"org":1400,"tags":1401,"stars":19,"repoUrl":20,"updatedAt":1404},"dart-generate-test-mocks","generate mock objects for Dart tests","Define and generate mock objects for external dependencies using `package:mockito` and `build_runner`. Use when unit testing classes that depend on complex external services like APIs or databases.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1402,1403],{"name":13,"slug":14,"type":15},{"name":1365,"slug":1366,"type":15},"2026-07-15T05:22:42.607449",{"slug":1406,"name":1406,"fn":1407,"description":1408,"org":1409,"tags":1410,"stars":19,"repoUrl":20,"updatedAt":1416},"dart-migrate-to-checks-package","migrate test matchers to checks package","Replace the usage of `expect` and similar functions from `package:matcher`\nto `package:checks` equivalents.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1411,1412,1415],{"name":13,"slug":14,"type":15},{"name":1413,"slug":1414,"type":15},"Migration","migration",{"name":1365,"slug":1366,"type":15},"2026-07-15T05:22:31.276564",{"slug":1418,"name":1418,"fn":1419,"description":1420,"org":1421,"tags":1422,"stars":19,"repoUrl":20,"updatedAt":1428},"dart-resolve-package-conflicts","resolve Dart package version conflicts","Workflow for fixing package version conflicts. Use this when `pub get` fails due to incompatible package versions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1423,1424,1425],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":1426,"slug":1427,"type":15},"Engineering","engineering","2026-07-15T05:22:30.059335",24,{"items":1431,"total":1527},[1432,1437,1442,1448,1453,1458,1464,1470,1482,1494,1508,1518],{"slug":1358,"name":1358,"fn":1359,"description":1360,"org":1433,"tags":1434,"stars":19,"repoUrl":20,"updatedAt":1367},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1435,1436],{"name":13,"slug":14,"type":15},{"name":1365,"slug":1366,"type":15},{"slug":1369,"name":1369,"fn":1370,"description":1371,"org":1438,"tags":1439,"stars":19,"repoUrl":20,"updatedAt":1378},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1440,1441],{"name":1375,"slug":1376,"type":15},{"name":13,"slug":14,"type":15},{"slug":1380,"name":1380,"fn":1381,"description":1382,"org":1443,"tags":1444,"stars":19,"repoUrl":20,"updatedAt":1390},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1445,1446,1447],{"name":13,"slug":14,"type":15},{"name":1387,"slug":1388,"type":15},{"name":1365,"slug":1366,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":1449,"tags":1450,"stars":19,"repoUrl":20,"updatedAt":21},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1451,1452],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"slug":1397,"name":1397,"fn":1398,"description":1399,"org":1454,"tags":1455,"stars":19,"repoUrl":20,"updatedAt":1404},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1456,1457],{"name":13,"slug":14,"type":15},{"name":1365,"slug":1366,"type":15},{"slug":1406,"name":1406,"fn":1407,"description":1408,"org":1459,"tags":1460,"stars":19,"repoUrl":20,"updatedAt":1416},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1461,1462,1463],{"name":13,"slug":14,"type":15},{"name":1413,"slug":1414,"type":15},{"name":1365,"slug":1366,"type":15},{"slug":1418,"name":1418,"fn":1419,"description":1420,"org":1465,"tags":1466,"stars":19,"repoUrl":20,"updatedAt":1428},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1467,1468,1469],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":1426,"slug":1427,"type":15},{"slug":1471,"name":1471,"fn":1472,"description":1473,"org":1474,"tags":1475,"stars":19,"repoUrl":20,"updatedAt":1481},"dart-run-static-analysis","run static analysis and apply fixes","Execute `dart analyze` to identify warnings and errors, and use `dart fix --apply` to automatically resolve mechanical lint issues. Use during development to ensure code quality and before committing changes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1476,1479,1480],{"name":1477,"slug":1478,"type":15},"Code Analysis","code-analysis",{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},"2026-07-15T05:22:23.861119",{"slug":1483,"name":1483,"fn":1484,"description":1485,"org":1486,"tags":1487,"stars":19,"repoUrl":20,"updatedAt":1493},"dart-setup-ffi-assets","package C\u002FC++ assets for Dart","Guides agents in compiling and packaging C\u002FC++ source code into dynamic or static libraries (Code Assets) using Dart's Native Assets hook system (via hook\u002Fbuild.dart and hook\u002Flink.dart utilizing package:hooks and package:native_toolchain_c). Use when a user asks to: 'setup native assets', 'compile C\u002FC++ source code', 'bundle dynamic libraries', 'build native C code', 'link native assets', 'implement build.dart or link.dart hooks', or 'integrate C\u002FC++ interop in Dart\u002FFlutter'. Helps agents avoid manual toolchain orchestration and configures secure hash-validated binary downloads or advanced linker tree-shaking with package:record_use mapping.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1488,1489,1492],{"name":13,"slug":14,"type":15},{"name":1490,"slug":1491,"type":15},"Deployment","deployment",{"name":1426,"slug":1427,"type":15},"2026-07-15T05:22:20.138636",{"slug":1495,"name":1495,"fn":1496,"description":1497,"org":1498,"tags":1499,"stars":19,"repoUrl":20,"updatedAt":1507},"dart-skills-lint-setup","configure dart_skills_lint for Dart projects","Use this skill when you need to set up validation for AI agent skills in a Dart project for the first time.\nAdds the linter as a dev_dependency, creates a configuration file, and generates a baseline for legacy repos.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1500,1501,1504],{"name":13,"slug":14,"type":15},{"name":1502,"slug":1503,"type":15},"Plugin Development","plugin-development",{"name":1505,"slug":1506,"type":15},"QA","qa","2026-07-15T05:22:47.488998",{"slug":1509,"name":1509,"fn":1510,"description":1511,"org":1512,"tags":1513,"stars":19,"repoUrl":20,"updatedAt":1517},"dart-skills-lint-validation","validate agent skills with dart_skills_lint","Use this skill when you need to validate AI agent skills with dart_skills_lint — running the linter, interpreting failures, fixing violations, and authoring custom rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1514,1515,1516],{"name":13,"slug":14,"type":15},{"name":1502,"slug":1503,"type":15},{"name":1505,"slug":1506,"type":15},"2026-07-21T05:38:34.451024",{"slug":1519,"name":1519,"fn":1520,"description":1521,"org":1522,"tags":1523,"stars":19,"repoUrl":20,"updatedAt":1526},"dart-use-ffigen","generate FFI bindings with ffigen","Guide agents to use `package:ffigen` to automatically generate FFI bindings instead of writing them manually. Use this skill when a task involves writing new FFI bindings, extending C\u002FObjective-C\u002FSwift integrations, or replacing hand-crafted `dart:ffi` setups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1524,1525],{"name":13,"slug":14,"type":15},{"name":1426,"slug":1427,"type":15},"2026-07-15T05:22:17.592351",27]