Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions sites/www/content/why-flutter/images/leancode.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions sites/www/content/why-flutter/images/resource-arrow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
32 changes: 32 additions & 0 deletions sites/www/content/why-flutter/images/vgvlogo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions sites/www/content/why-flutter/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Why Flutter
bodyTags: interior whyFlutter
description: >-
Discover how unifying your codebase empowers you to ship to iOS, Android,
Web, and Desktop faster and more efficiently than ever before.
publishDate: "2026-08-03"
---

<WhyFlutterPage />
35 changes: 35 additions & 0 deletions sites/www/lib/main.client.options.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ import 'package:flutter_website/src/components/pages/games_adaptive_media.dart'
deferred as _games_adaptive_media;
import 'package:flutter_website/src/components/pages/showcase_grid.dart'
deferred as _showcase_grid;
import 'package:flutter_website/src/components/sections/why_flutter_ai_era_section.dart'
deferred as _why_flutter_ai_era_section;
import 'package:flutter_website/src/components/sections/why_flutter_cases_section.dart'
deferred as _why_flutter_cases_section;
import 'package:flutter_website/src/components/sections/why_flutter_code_shared_section.dart'
deferred as _why_flutter_code_shared_section;
import 'package:flutter_website/src/components/sections/why_flutter_hero_section.dart'
deferred as _why_flutter_hero_section;
import 'package:flutter_website/src/models/content/banner_content.dart'
as _banner_content;
import 'package:site_shared/components/blog/client/blog_categories.dart'
Expand Down Expand Up @@ -145,6 +153,33 @@ ClientOptions get defaultClientOptions => ClientOptions(
),
loader: _showcase_grid.loadLibrary,
),
'why_flutter_ai_era_section': ClientLoader(
(p) => _why_flutter_ai_era_section.WhyFlutterAiEraSection(
geminiSprite: p['geminiSprite'] as String,
),
loader: _why_flutter_ai_era_section.loadLibrary,
),
'why_flutter_cases_section': ClientLoader(
(p) => _why_flutter_cases_section.WhyFlutterCasesSection(
media: (p['media'] as Map<String, Object?>).cast<String, String>(),
),
loader: _why_flutter_cases_section.loadLibrary,
),
'why_flutter_code_shared_section': ClientLoader(
(p) => _why_flutter_code_shared_section.WhyFlutterCodeSharedSection(
laptopSprite: p['laptopSprite'] as String,
),
loader: _why_flutter_code_shared_section.loadLibrary,
),
'why_flutter_hero_section': ClientLoader(
(p) => _why_flutter_hero_section.WhyFlutterHeroSection(
typingSprite: p['typingSprite'] as String,
screens: (p['screens'] as List<Object?>).cast<String>(),
whitepaperUrl: p['whitepaperUrl'] as String,
flutterLogo: p['flutterLogo'] as String,
),
loader: _why_flutter_hero_section.loadLibrary,
),
'site_shared:blog_categories': ClientLoader(
(p) => _blog_categories.BlogCategories(
categories: (p['categories'] as List<Object?>)
Expand Down
2 changes: 2 additions & 0 deletions sites/www/lib/main.server.dart
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import 'src/pages/news_page.dart';
import 'src/pages/not_found_page.dart';
import 'src/pages/showcase_page.dart';
import 'src/pages/web_page.dart';
import 'src/pages/why_flutter_page.dart';
import 'src/utils/asset_utils.dart';

void main() async {
Expand Down Expand Up @@ -118,6 +119,7 @@ void main() async {
defineComponent('BrandPage', const BrandPage()),
defineComponent('FlipPage', const FlipPage()),
defineComponent('NewsPage', const NewsPage()),
defineComponent('WhyFlutterPage', const WhyFlutterPage()),
defineComponentWithAttrs('Image', Image.fromAttrs),

CustomComponent(
Expand Down
Loading
Loading