Skip to content

flutter create page - #13981

Draft
abdallahshaban557 wants to merge 2 commits into
flutter:mainfrom
abdallahshaban557:flutter_streaming_landing_page
Draft

abdallahshaban557 wants to merge 2 commits into
flutter:mainfrom
abdallahshaban557:flutter_streaming_landing_page

Conversation

@abdallahshaban557

Copy link
Copy Markdown
Contributor

Summary

Adds a landing page for Flutter Create 2026, Flutter's Q4 flagship livestream, at /flutter-create-2026. Visitors sign in with Google to be notified about the stream. Signing in creates or updates their Google Developer Program (GDP) profile, opts them in to event emails, and adds Flutter to their profile interests.

Important

Draft: the page currently targets the staging Developer Profiles API, and the event details shouldn't go live before the public announcement. Don't merge until launch.

Changes

New page: sites/www

  • content/flutter-create-2026.md: page entry (title, description, body tags) that renders <FlutterCreatePage />.
  • lib/src/pages/flutter_create_page.dart: the page, with:
    • Hero: livestream pill (November 11, 2026), "Flutter Everywhere, Everyday" headline, short description, Google sign-in call to action and disclosure, plus a stylized livestream card with a flutter create terminal prompt and countdown.
    • About: "The newest Flutter and Dart features" with highlight chips (single-day livestream, launches with the latest release, co-hosted with partners and community).
    • Topics: six session topic cards (What's new, AI on every screen, Desktop and embedded, Native interop, Design systems, Dart and WebAssembly).
    • Sign-up: "Get notified when we go live" card with a second sign-in panel.
    • Omits the shared CTASection ("Get started") on this page only.
  • lib/src/components/pages/flutter_create_signup.dart (@client): Google sign-in and GDP integration, in two variants (compact for the hero, the full panel for the sign-up section).
    • Uses the Google Identity Services token client (popup flow, no redirect URI) to request the devprofiles.full_control scope. The library is preloaded so the popup opens within the click and isn't blocked.
    • On success: finds or creates the GDP profile (with event emails enabled and the origin recorded), then adds the E-product-Flutter interest.
    • Shared and persisted state: a successful sign-up from either form shows the success state in both. It's stored in localStorage (flutter-create-2026-signup: created flag and timestamp only, no PII) so it persists across visits, and is cleared after November 12, 2026. "Use a different account" resets it.
    • No flash or layout shift: both the sign-in and success states are rendered and stacked in one grid cell. A tiny inline script (flutterCreateSignupStateScript) sets html.fc-signed-up before first paint, and CSS picks the visible state. Returning visitors never see the sign-in button, and switching states doesn't move the page.
    • Descriptive errors (popup blocked, cancelled, GIS error codes, and API errors in non-production builds), plus a console log for debugging.
  • lib/src/components/pages/flutter_create_countdown.dart (@client): "N days to go" countdown, with a "November 11 · Online" fallback before hydration.
  • lib/styles/pages/_flutter_create.scss: page styles following the Why Flutter page's visual language (gradient hero, tinted cards, chips), written mobile-first.
  • lib/main.server.dart and lib/styles/styles.scss: register the page component and stylesheet.
  • lib/main.client.options.dart and lib/main.server.options.dart: regenerated by build_runner for the new @client components.

New shared GDP client: packages/site_shared

  • lib/src/utils/developer_profiles_client.dart, exported from lib/developer_profiles.dart: a small, reusable client for the Google Developer Profiles API (v1beta1), built on package:http.
    • DeveloperProfilesEnvironment.staging (default) and .production.
    • hasProfile, getProfile, createProfile, ensureProfile, addInterests (interests:batchUpdate).
    • developerProfilesScope and flutterInterestNodeId constants, plus a typed DeveloperProfilesException.
    • Request and response shapes follow google/developers/v1beta1 (service.proto, profile.proto, profilepath.proto).

Configuration

The OAuth client ID is supplied at build time and isn't committed:

cd sites/www
dart pub global run jaspr_cli:jaspr serve --port 8094 \
  --dart-define=GDP_OAUTH_CLIENT_ID=<dev-client-id>
  • Optional: --dart-define=GDP_API_KEY=<restricted-key>.
  • Without a client ID, the sign-in buttons are disabled and show "Sign-in is not configured for this build."
  • The OAuth client needs only Authorized JavaScript origins (for example http://localhost:8094 for dev, https://flutter.dev for prod); no redirect URIs. Use separate dev and prod clients.

Before launch

  • Switch the page to DeveloperProfilesEnvironment.production and enable developers.googleapis.com in the project.
  • Add the production GDP_OAUTH_CLIENT_ID to the deploy configuration.
  • Verify the OAuth consent screen for the devprofiles.full_control scope.
  • Confirm the E-product-Flutter interest node ID with the GDP team.
  • If the site's CSP (script-src 'self', currently report-only) is enforced, allow the inline sign-up state script with a hash or nonce in firebase.json.
  • Final copy review once event details are public.

Testing

  • dart analyze passes for sites/www and packages/site_shared, and jaspr build succeeds.
  • Manually verified sign-in end to end against the staging API (profile lookup and creation, plus the Flutter interest).
  • Headless Chrome checks: a recorded sign-up shows the success state from the first frame in both forms, and form heights and the next section's position are unchanged across load, sign-in, and "Use a different account". Checked at desktop and mobile widths.

Adds /flutter-create-2026, a landing page for the Flutter Create 2026
livestream. Visitors sign in with Google to create or update their
Google Developer Program profile, opt in to event emails, and add
Flutter as an interest.

Also adds a reusable Developer Profiles API client to site_shared.
@flutter-website-bot

flutter-website-bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Staged preview of the updated docs.flutter.dev site (updated for commit 17fd23f):

https://flutter-docs-prod--docs-pr13981-flutter-streaming-land-xj440ibi.web.app

@flutter-website-bot

flutter-website-bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Staged preview of the updated flutter.dev site (updated for commit 17fd23f):

https://flutter-dev-230821--www-pr13981-flutter-streaming-land-s9ck9oy3.web.app

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.

2 participants