Conversation
WalkthroughThe changes restructure and expand the documentation for the Disco Flutter library, including a major rewrite of the package README, updates to the main documentation index, and a new, reformulated "Comparison with alternatives" section. The changelog and pubspec version are updated to reflect these documentation improvements. No functional code changes are included. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~7 minutes Poem
✨ Finishing Touches🧪 Generate unit tests
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #27 +/- ##
=======================================
Coverage 99.53% 99.53%
=======================================
Files 9 9
Lines 217 217
=======================================
Hits 216 216
Misses 1 1 🚀 New features to boost your workflow:
|
Deploying flutter-disco with
|
| Latest commit: |
0c5bd53
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://cbf787b8.flutter-disco.pages.dev |
| Branch Preview URL: | https://chore-improve-readme.flutter-disco.pages.dev |
nank1ro
left a comment
There was a problem hiding this comment.
I like the fact that the README is just an introduction to the package, where you just say the basic steps to perform dependency injection.
All the notes and stuff like that adds complexity that a newcomer doesn't need.
I like the simplicity of how it is, because in the most of the cases is all you need.
The detailed documentation is already going very deep to explain every aspect of it, and it's where notes are useful and more advanced users can learn further.
I see what you mean. I wrapped two parts inside two I think that using examples with flutter widget code makes more sense for people to understand where the Also, we really need the new section "What is unique about this library" for people to immediately understand what is special about our library, and how it is different from provider. Most people are probably not going to try and understand what is special just by looking at the code. Maybe they will just assume is something similar to the Provider package, and will not read further. Maybe we can still add a tiny table of content with:
what do you say? |
|
In the second snippet, I think i can remove the ProvidingWidget, and just leave ProviderScope. However, i we should leave InjectingWidget In the 3rd snippet. It ia way more understandable. |
|
In the new section, i need to wrap the entire workflow inside a |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
packages/disco/README.md (2)
20-24: Rename heading to “Table of contents”Minor wording fix—“contents” is standard usage for this section title.
-## Table of content +## Table of contents
135-141: Polish wording flagged by LanguageToolTwo style nits that make the trade-offs table read more professionally:
-| ❌ Totally unopinionated on purpose¹ +| ❌ Intentionally unopinionated¹ ... -| ✅ Extremely simple +| ✅ Very simple
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
docs/src/content/docs/index.mdx(2 hunks)packages/disco/README.md(3 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/src/content/docs/index.mdx
🧰 Additional context used
🪛 LanguageTool
packages/disco/README.md
[style] ~135-~135: Try using a descriptive adverb here.
Context: ... | ❌ Totally unopinionated on purpose¹ | | Mutable state support ...
(ON_PURPOSE_DELIBERATELY)
[style] ~140-~140: As an alternative to the over-used intensifier ‘extremely’, consider replacing this phrase.
Context: ... WidgetRef, ConsumerWidget, ... | ✅ Extremely simple | | **Ease of integra...
(EN_WEAK_ADJECTIVE)
[style] ~182-~182: Consider using “incompatible” to avoid wordiness.
Context: ...https://pub.dev/packages/riverpod), are not compatible with this library. ### Development Act...
(NOT_ABLE_PREMIUM)
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (8)
packages/disco/README.md (8)
20-20: Prefer the conventional heading “Table of contents”.Minor wording nit: documentation typically uses the plural “contents”.
Changing it keeps the README consistent with common convention.-## Table of content +## Table of contents
22-26: Update anchor text to match the renamed section.If you accept the previous plural-form change, remember to adjust the Markdown anchors so internal links keep working.
-- [Simple usage example](#simple-usage-example) -- [What makes this library unique](#what-makes-this-library-unique) -- [Trade-offs](#trade-offs) -- [Examples](#examples) -- [Additional information](#additional-information) +- [Simple usage example](#simple-usage-example) +- [What makes this library unique](#what-makes-this-library-unique) +- [Trade-offs](#trade-offs) +- [Examples](#examples) +- [Additional information](#additional-information)
55-64: Provide a complete, copy-pastable snippet.The example stops with a comment placeholder (
// return ..), so newcomers who copy-paste will get a compile error.
A minimalreturn(or evenContainer()) keeps the focus on injection while producing valid code.- final model = modelProvider.of(context); - // return .. (use model here) + final model = modelProvider.of(context); + return Text(model.toString());
108-116: Use string interpolation for clarity and to avoid null-handling edge-cases.Interpolation is shorter and side-steps operator-precedence pitfalls altogether.
- return Text(model.toString() + ", " + (secondModel?.toString() ?? "(empty)")); + return Text('${model}, ${secondModel?.toString() ?? "(empty)"}');
135-136: Tighten wording: “Deliberately unopinionated” reads better than “Totally unopinionated on purpose”.-| ❌ Totally unopinionated on purpose¹ | +| ❌ Deliberately unopinionated¹ |
140-140: Replace “Extremely” with a leaner adjective (“Very” / “Super”) to avoid weak intensifiers.
167-169: Small grammar tweak: “As mentioned earlier” instead of “Like already mentioned”.-Like already mentioned in the trade-offs section, this package is not opinionated about reactivity: feel free to use your +As mentioned earlier in the trade-offs section, this package is not opinionated about reactivity: feel free to use your
186-186: Consider moving the “Development Activity” note to the bottom, per prior feedback.This aligns with the previous suggestion from the reviewer and keeps the flow reader-focused.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
docs/src/content/docs/index.mdx(2 hunks)packages/disco/README.md(3 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/src/content/docs/index.mdx
🧰 Additional context used
🪛 LanguageTool
packages/disco/README.md
[style] ~135-~135: Try using a descriptive adverb here.
Context: ... | ❌ Totally unopinionated on purpose¹ | | Mutable state support ...
(ON_PURPOSE_DELIBERATELY)
[style] ~140-~140: As an alternative to the over-used intensifier ‘extremely’, consider replacing this phrase.
Context: ... WidgetRef, ConsumerWidget, ... | ✅ Extremely simple | | **Ease of integra...
(EN_WEAK_ADJECTIVE)
[style] ~182-~182: Consider using “incompatible” to avoid wordiness.
Context: ...https://pub.dev/packages/riverpod), are not compatible with this library. ### Development Act...
(NOT_ABLE_PREMIUM)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Cloudflare Pages
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (4)
packages/disco/README.md (4)
20-24: Prefer plural “Table of contents”.Standard English and most READMEs use “Table of contents”.
Renaming improves polish and perceived quality.-## Table of content +## Table of contents
135-136: Tone: drop the filler “Totally” for a crisper statement.-| ❌ Totally unopinionated on purpose¹ | +| ❌ Unopinionated by design¹ |This keeps the row concise without changing meaning.
140-140: Avoid over-used intensifier “Extremely”.A neutral adjective reads more professional.
-| ✅ Extremely simple | +| ✅ Very simple |
182-183: Minor wording: swap “not compatible” → “incompatible”.-State management solution entirely leveraging or endorsing global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are not compatible with this library. +State-management solutions that rely entirely on global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are incompatible with this library.This avoids wordiness and aligns with the preceding “Compatible solutions” section.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
docs/src/content/docs/index.mdx(2 hunks)packages/disco/README.md(3 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/src/content/docs/index.mdx
🧰 Additional context used
🪛 LanguageTool
packages/disco/README.md
[style] ~135-~135: Try using a descriptive adverb here.
Context: ... | ❌ Totally unopinionated on purpose¹ | | Mutable state support ...
(ON_PURPOSE_DELIBERATELY)
[style] ~140-~140: As an alternative to the over-used intensifier ‘extremely’, consider replacing this phrase.
Context: ... WidgetRef, ConsumerWidget, ... | ✅ Extremely simple | | **Ease of integra...
(EN_WEAK_ADJECTIVE)
[style] ~182-~182: Consider using “incompatible” to avoid wordiness.
Context: ...https://pub.dev/packages/riverpod), are not compatible with this library. ### Development Act...
(NOT_ABLE_PREMIUM)
🔇 Additional comments (1)
packages/disco/README.md (1)
8-17: Symlink in root still present?Past discussion agreed to keep only one README and create a symlink at repository root.
Please verify that the root-levelREADME.mdnow is a symlink to this file and not a duplicate copy, to prevent the two from drifting apart.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (3)
packages/disco/README.md (3)
34-38: Add import to make the snippet copy-paste runnableBeginners following this “simple usage” section will immediately hit an “unknown class
Provider” error.
A single-line import keeps the example self-contained and prevents frustration.final modelProvider = Provider((context) => Model()); +// add directly above +import 'package:disco/disco.dart';
140-140: Tone: drop the intensifier “Very”Over-using “very” weakens technical writing and was flagged by LanguageTool.
Simplealready conveys the message.-| ✅ Very simple +| ✅ Simple
182-182: Grammar: use “incompatible” instead of the wordy phrase-State management solution entirely leveraging or endorsing global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are not compatible with this library. +State-management solutions that rely on global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are incompatible with this library.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
packages/disco/README.md(3 hunks)
🧰 Additional context used
🪛 LanguageTool
packages/disco/README.md
[style] ~140-~140: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... WidgetRef, ConsumerWidget, ... | ✅ Very simple | | **Ease of integra...
(EN_WEAK_ADJECTIVE)
[style] ~182-~182: Consider using “incompatible” to avoid wordiness.
Context: ...https://pub.dev/packages/riverpod), are not compatible with this library. ### Contributions ...
(NOT_ABLE_PREMIUM)
🔇 Additional comments (1)
packages/disco/README.md (1)
113-116: Interpolation fix looks goodUsing string interpolation eliminates the
??/+precedence issue reported earlier.
Thanks for addressing it.
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (1)
glimpse-into-other-DI-approaches.md (1)
8-8: Fix malformed link & verb agreement (duplicate of earlier feedback).The extra
]at the end of the flutter _bloc URL breaks Markdown, and “let you” should be “lets you”.-The [`Provider`](https://pub.dev/packages/provider) package and libraries built on top of it, such as [Bloc (BlocProvider component)](https://pub.dev/packages/flutter_bloc#blocprovider]), let you scope dependencies using the widget tree. +The [`Provider`](https://pub.dev/packages/provider) package and libraries built on top of it, such as [Bloc (BlocProvider component)](https://pub.dev/packages/flutter_bloc#blocprovider), lets you scope dependencies using the widget tree.
🧹 Nitpick comments (2)
glimpse-into-other-DI-approaches.md (2)
62-62: Grammar – singular verb and missing pronoun.Change “allow to access” → “allows you to access”.
-The `ref` is a special object that allow to access providers. +The `ref` is a special object that allows you to access providers.
79-79: Minor style – simplify “In order to”.-In order to access a provider, you must use specialized widgets (`ConsumerWidget`, `ConsumerStatefulWidget`) instead of Flutter's native ones. +To access a provider, you must use specialized widgets (`ConsumerWidget`, `ConsumerStatefulWidget`) instead of Flutter's native ones.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
glimpse-into-other-DI-approaches.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
glimpse-into-other-DI-approaches.md
[style] ~78-~78: Consider a more concise word here.
Context: ...s not possible to access any provider. In order to access a provider, you must use special...
(IN_ORDER_TO_PREMIUM)
docs/src/content/docs/index.mdx
Outdated
|
|
||
| **Disco** draws inspiration from both [Provider](https://pub.dev/packages/provider) and [Riverpod](https://pub.dev/packages/riverpod) — the two most widely used DI libraries in Flutter, both built around the concept of providers — while aiming to overcome their respective limitations. These libraries have significantly shaped how developers manage state and dependencies: **Provider** supports a simple, widget-tree–aligned scoping model, but does not allow multiple providers of the same type. **Riverpod**, by contrast, supports multiple providers of the same type, but relies on a globally structured architecture that breaks away from the widget tree. | ||
|
|
||
| If you’d like to explore the pain points of Provider and Riverpod in more detail, see our short article [here](https://github.com/our-creativity/disco/blob/main/glimpse-into-other-DI-approaches.md). |
There was a problem hiding this comment.
this link doesn't work yet.
Why is this md file in the root and not in the docs?
There was a problem hiding this comment.
I was a bit in a hurry and didn't think about it
There was a problem hiding this comment.
It does not work yet because it is not merged in main yet. Once it gets merged, it will work. If you open the link, you can select this branch here instead of main and it will be displayed correctly.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (3)
docs/glimpse-into-other-DI-approaches.md (1)
61-61: Grammar nit – “allow → allows”-The `ref` is a special object that allow to access providers. +The `ref` is a special object that allows you to access providers.packages/disco/README.md (2)
134-134: Typo: “architectured” → “architected”-| **Circular dependencies possible** | ✅ Never | ❌ Yes, if the app is not carefully architectured | ✅ Never | +| **Circular dependencies possible** | ✅ Never | ❌ Yes, if the app is not carefully architected | ✅ Never |
140-140: Tone tweak – drop intensifier-| **API simplicity** | ✅ Simple | ⚠️ Requires learning `WidgetRef`, `ConsumerWidget`, ... | ✅ Very simple | +| **API simplicity** | ✅ Simple | ⚠️ Requires learning `WidgetRef`, `ConsumerWidget`, ... | ✅ Simple |
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
docs/glimpse-into-other-DI-approaches.md(1 hunks)docs/src/content/docs/index.mdx(2 hunks)packages/disco/README.md(3 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/src/content/docs/index.mdx
🧰 Additional context used
🪛 LanguageTool
docs/glimpse-into-other-DI-approaches.md
[style] ~77-~77: Consider a more concise word here.
Context: ...s not possible to access any provider. In order to access a provider, you must use special...
(IN_ORDER_TO_PREMIUM)
packages/disco/README.md
[style] ~140-~140: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... WidgetRef, ConsumerWidget, ... | ✅ Very simple | | **Ease of integra...
(EN_WEAK_ADJECTIVE)
[style] ~182-~182: Consider using “incompatible” to avoid wordiness.
Context: ...https://pub.dev/packages/riverpod), are not compatible with this library. ### Contributions ...
(NOT_ABLE_PREMIUM)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Cloudflare Pages
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
docs/glimpse-into-other-DI-approaches.md (2)
61-62: Grammar tweak for subject-verb agreement
allow→allowsand clarified the phrase for smoother reading.-The `ref` is a special object that allow to access providers. +The `ref` is a special object that allows you to access providers.
76-79: Minor wording simplificationUsing “To” instead of “In order to” keeps the sentence concise.
-In order to access a provider, you must use specialized widgets (`ConsumerWidget`, `ConsumerStatefulWidget`) instead of Flutter's native ones. +To access a provider, you must use specialized widgets (`ConsumerWidget`, `ConsumerStatefulWidget`) instead of Flutter's native ones.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
docs/glimpse-into-other-DI-approaches.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/glimpse-into-other-DI-approaches.md
[style] ~77-~77: Consider a more concise word here.
Context: ...s not possible to access any provider. In order to access a provider, you must use special...
(IN_ORDER_TO_PREMIUM)
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (4)
docs/glimpse-into-other-DI-approaches.md (2)
63-70: Over-generalisation about top-levelProviderScopein RiverpodRiverpod does require a
ProviderScopeat the root, but additional nested scopes are allowed for overriding providers in tests or sub-trees. Consider rephrasing “managed from a single, top-levelProviderScope” to acknowledge that nested scopes are possible, otherwise advanced users may flag the doc as misleading.-Note that **the state for these providers is not local** — it's managed from a single, top-level `ProviderScope`: +Note that **provider state is not local by default** — it lives inside the root-level `ProviderScope` (though additional nested scopes can be created for overrides):
76-80: “In order to” → “To”Minor wording tweak for conciseness and to avoid the LanguageTool flag.
-In order to access a provider, you must use specialised widgets +To access a provider, you must use specialised widgetspackages/disco/README.md (2)
138-142: Tone tweak – drop the intensifier “Very”The table cell already conveys simplicity; removing “Very” reads cleaner and avoids the style warning.
-| ✅ Very simple +| ✅ Simple
182-183: Use “incompatible” instead of “not compatible”A single word keeps the sentence tight and addresses the LanguageTool hint.
-State management solution entirely leveraging or endorsing global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are not compatible with this library. +State-management solutions that rely entirely on global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are incompatible with this library.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
docs/glimpse-into-other-DI-approaches.md(1 hunks)packages/disco/README.md(3 hunks)
🧰 Additional context used
🪛 LanguageTool
packages/disco/README.md
[style] ~140-~140: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... WidgetRef, ConsumerWidget, ... | ✅ Very simple | | **Ease of integra...
(EN_WEAK_ADJECTIVE)
[style] ~182-~182: Consider using “incompatible” to avoid wordiness.
Context: ...https://pub.dev/packages/riverpod), are not compatible with this library. ### Contributions ...
(NOT_ABLE_PREMIUM)
docs/glimpse-into-other-DI-approaches.md
[style] ~77-~77: Consider a more concise word here.
Context: ...s not possible to access any provider. In order to access a provider, you must use special...
(IN_ORDER_TO_PREMIUM)
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (4)
packages/disco/README.md (4)
32-38: Add the import to keep the snippet copy-pasteableMost newcomers will try to paste the snippet verbatim. Without
import 'package:disco/disco.dart';it will not compile and the immediate error breaks the “quick start” promise.```dart +import 'package:disco/disco.dart'; + final modelProvider = Provider((context) => Model());
55-64: Make the widget example self-containedSame concern as above: a single import line removes the need to guess the
package name and lets the snippet compile in isolation.-class InjectingWidget extends StatelessWidget { +import 'package:disco/disco.dart'; + +class InjectingWidget extends StatelessWidget {
95-95: Tone down the “Very simple” wordingThe marketing adjective can be dropped without losing meaning and removes the weak intensifier highlighted by LanguageTool.
-| **API simplicity** | ✅ Simple | ⚠️ Requires learning `WidgetRef`, `ConsumerWidget`, ... | ✅ Very simple | +| **API simplicity** | ✅ Simple | ⚠️ Requires learning `WidgetRef`, `ConsumerWidget`, ... | ✅ Simple |
137-137: Use “incompatible” for conciseness-State management solution entirely leveraging or endorsing global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are not compatible with this library. +State-management solutions that rely entirely on global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are incompatible with this library.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
docs/src/content/docs/index.mdx(2 hunks)docs/src/content/docs/miscellaneous/comparison-with-alternatives.md(0 hunks)docs/src/content/docs/miscellaneous/comparison-with-alternatives.mdx(1 hunks)packages/disco/README.md(3 hunks)
💤 Files with no reviewable changes (1)
- docs/src/content/docs/miscellaneous/comparison-with-alternatives.md
✅ Files skipped from review due to trivial changes (1)
- docs/src/content/docs/miscellaneous/comparison-with-alternatives.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/src/content/docs/index.mdx
🧰 Additional context used
🪛 LanguageTool
packages/disco/README.md
[style] ~95-~95: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... WidgetRef, ConsumerWidget, ... | ✅ Very simple | | **Ease of integra...
(EN_WEAK_ADJECTIVE)
[style] ~137-~137: Consider using “incompatible” to avoid wordiness.
Context: ...https://pub.dev/packages/riverpod), are not compatible with this library. ### Contributions ...
(NOT_ABLE_PREMIUM)
🔇 Additional comments (1)
packages/disco/README.md (1)
18-18: External links verified – no broken references foundAll external URLs in packages/disco/README.md (lines 18 and 112–117) were checked and return HTTP 200. No broken links detected.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (4)
docs/src/content/docs/index.mdx (1)
20-21: Indent<Aside>blocks so they remain part of the numbered list
Without the extra four-space indent, each<Aside>starts a new paragraph and the Markdown engine breaks the1./2./3.sequence.-<Aside>The state is never stored globally, directly in the Provider instance; see this provider solely as a type-safe identifier.</Aside> + <Aside>The state is never stored globally, directly in the Provider instance; see this provider solely as a type-safe identifier.</Aside> -<Aside>The actual state for the provider is created and stored inside the `ProviderScope` instance where the provider is referenced. -This way, when the ProviderScope gets disposed, the state gets disposed — making it ideal for managing **local state**.</Aside> + <Aside>The actual state for the provider is created and stored inside the `ProviderScope` instance where the provider is referenced. + This way, when the ProviderScope gets disposed, the state gets disposed — making it ideal for managing **local state**.</Aside> -<Aside>The `ProviderScope` defined in step 2 needs to be an ancestor of this `InjectingWidget` widget.</Aside> + <Aside>The `ProviderScope` defined in step 2 needs to be an ancestor of this `InjectingWidget` widget.</Aside>Also applies to: 31-32, 48-48
packages/disco/README.md (3)
38-38: Keep notes inside list items for correct renderingSame indentation issue as in the docs page – the un-indented
**Note:**paragraphs terminate the list prematurely.-**Note:** the state is never stored globally, directly in the Provider instance; see this provider solely as a type-safe identifier. + **Note:** the state is never stored globally; the provider acts only as a type-safe identifier. -**Note:** the actual state for the provider is created and stored inside the `ProviderScope` instance where the provider is referenced. -This way, when the ProviderScope gets disposed, the state gets disposed — making it ideal for managing **local state**. + **Note:** the provider’s state is created inside the surrounding `ProviderScope`. + When that scope is disposed, so is the state — perfect for **local state**. -**Note:** the `ProviderScope` defined in step 2 needs to be an ancestor of this `InjectingWidget` widget. + **Note:** the `ProviderScope` from step 2 must be an ancestor of `InjectingWidget`.Also applies to: 49-50, 67-67
95-95: Tone tweak – avoid “very”Minor wording polish for the table.
-| **API simplicity** | ✅ Simple | ⚠️ Requires learning `WidgetRef`, `ConsumerWidget`, ... | ✅ Very simple | +| **API simplicity** | ✅ Simple | ⚠️ Requires learning `WidgetRef`, `ConsumerWidget`, ... | ✅ Straightforward |
137-137: Grammar – use “incompatible”-State management solution entirely leveraging or endorsing global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are not compatible with this library. +State-management solutions that rely entirely on global state, such as [`riverpod`](https://pub.dev/packages/riverpod), are incompatible with this library.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
docs/src/content/docs/index.mdx(2 hunks)packages/disco/README.md(3 hunks)
🧰 Additional context used
🪛 LanguageTool
packages/disco/README.md
[style] ~95-~95: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... WidgetRef, ConsumerWidget, ... | ✅ Very simple | | **Ease of integra...
(EN_WEAK_ADJECTIVE)
[style] ~137-~137: Consider using “incompatible” to avoid wordiness.
Context: ...https://pub.dev/packages/riverpod), are not compatible with this library. ### Contributions ...
(NOT_ABLE_PREMIUM)
🔇 Additional comments (1)
docs/src/content/docs/index.mdx (1)
6-7: Import looks good
Asideis correctly imported from the Starlight component package – no issues spotted.
This PR makes the README.md easier to understand, especially for people without plenty of Flutter experience.
If these changes are fine, I can also quickly adapt the main docs the same way.
Summary by CodeRabbit
Documentation
Chores