Skip to content

docs(repo): rebuild the tutorial example on StreamChannelPage - #2916

Draft
VelikovPetar wants to merge 2 commits into
masterfrom
feature/FLU-726_sync_tutorial_examples
Draft

docs(repo): rebuild the tutorial example on StreamChannelPage#2916
VelikovPetar wants to merge 2 commits into
masterfrom
feature/FLU-726_sync_tutorial_examples

Conversation

@VelikovPetar

@VelikovPetar VelikovPetar commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Linear: FLU-726
Github Issue: #

CLA

  • I have signed the Stream CLA (required).
  • The code changes follow best practices
  • Code changes are tested (add some information if not applicable)

Description of the pull request

Follow-up to the website change that moved Path B of the Flutter Chat tutorial onto StreamChannelPage (GetStream/getstream.io#433).

tutorial_part_1..6.dart implemented the tutorial as six standalone single-file apps. The tutorial is now two files plus theming and one component-slot override, so the example mirrors that:

example/lib/
  tutorial_client.dart              credentials + client setup (Steps 3-4)
  tutorial_channel_list_page.dart   shared - navigates to StreamChannelPage
  tutorial_rounded_avatar.dart      shared - Step 6 avatar slot
  tutorial_main_step4.dart          working app, default theme
  tutorial_main_step5.dart          + theming
  tutorial_main_step6.dart          + avatar slot

The three entry points differ only in MyApp, which is the point: theming and component overrides are both MyApp changes. Each keeps the runnable-per-step property of the old files:

flutter run -t lib/tutorial_main_step4.dart

Notes on the shape:

  • There is no channel_page.dart / thread_page.dart equivalent. StreamChannelPage hardcodes threadBuilder to StreamThreadPage and exposes no threadBuilder/onThreadTap, so a custom thread page is unreachable.
  • The old parts 3 and 5 were the only users of StreamChannelListView.itemBuilder / StreamMessageListView.messageBuilder; the new files are component-slot based throughout, matching what the tutorial teaches and what sample_app does.
  • tutorial_client.dart exists so the bootstrap (credentials, persistence attach, connectUser) isn't triplicated. The tutorial keeps it in main.dart; the doc comment says so.
  • No CHANGELOG.md entry: this is example-only, with no consumer-facing SDK change (same as docs(repo): sync tutorial example with website tutorial #2746).

Testing

  • flutter analyze clean, dart format clean.
  • All three entry points build for web, and step 4 / step 6 build and run on macOS with the client connecting and syncing to the persistence layer.
  • The widget code was verified on an Android emulator against a seeded app while validating the website change, including threads, theming, and the avatar slot reaching inside StreamChannelPage.

Screenshots / Videos

No UI change: these files reproduce the tutorial's app, whose output was verified on-device in GetStream/getstream.io#433. The change is how the example is organized.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant