blob: 23d7b188c5a8de9532f781487b595da77025585d [file] [log] [blame]
// Copyright 2019 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:gallery/data/gallery_options.dart';
import 'package:gallery/l10n/gallery_localizations.dart';
import 'package:gallery/layout/focus_traversal_policy.dart';
import 'package:gallery/pages/home.dart' as home;
import 'package:gallery/studies/starter/home.dart';
const _primaryColor = Color(0xFF6200EE);
class StarterApp extends StatefulWidget {
const StarterApp({Key key, this.navigatorKey}) : super(key: key);
final GlobalKey<NavigatorState> navigatorKey;
@override
_StarterAppState createState() => _StarterAppState();
}
class _StarterAppState extends State<StarterApp> {
FocusNode firstFocusNode;
FocusNode lastFocusNode;
@override
void initState() {
super.initState();
firstFocusNode = FocusNode();
lastFocusNode = FocusNode();
}
@override
void dispose() {
firstFocusNode.dispose();
lastFocusNode.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final backButtonFocusNode =
home.InheritedFocusNodes.of(context).backButtonFocusNode;
return MaterialApp(
navigatorKey: widget.navigatorKey,
title: GalleryLocalizations.of(context).starterAppTitle,
debugShowCheckedModeBanner: false,
localizationsDelegates: GalleryLocalizations.localizationsDelegates,
supportedLocales: GalleryLocalizations.supportedLocales,
locale: GalleryOptions.of(context).locale,
home: DefaultFocusTraversal(
policy: EdgeChildrenFocusTraversalPolicy(
firstFocusNodeOutsideScope: backButtonFocusNode,
lastFocusNodeOutsideScope: backButtonFocusNode,
firstFocusNodeInsideScope: firstFocusNode,
lastFocusNodeInsideScope: lastFocusNode,
),
child: ApplyTextOptions(
child: HomePage(
firstFocusNode: firstFocusNode,
lastFocusNode: lastFocusNode,
),
),
),
theme: ThemeData(
primaryColor: _primaryColor,
highlightColor: Colors.transparent,
colorScheme: ColorScheme(
primary: _primaryColor,
primaryVariant: const Color(0xFF3700B3),
secondary: const Color(0xFF03DAC6),
secondaryVariant: const Color(0xFF018786),
background: Colors.white,
surface: Colors.white,
onBackground: Colors.black,
error: const Color(0xFFB00020),
onError: Colors.white,
onPrimary: Colors.white,
onSecondary: Colors.black,
onSurface: Colors.black,
brightness: Brightness.light,
),
dividerTheme: DividerThemeData(
thickness: 1,
color: const Color(0xFFE5E5E5),
),
platform: GalleryOptions.of(context).platform,
),
);
}
}