blob: 33797adaef4c4836923ba7866426abf228088bc6 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'dart:developer' show Timeline;
import 'package:flutter/material.dart';
import 'package:fuchsia_logger/logger.dart';
import 'src/models/settings_model.dart';
import 'src/setting_entry.dart';
import 'src/setting_entry_parser.dart';
import 'src/widgets/all_settings.dart';
/// Main function of settings.
Future<Null> main() async {
setupLogger(name: 'settings');
Timeline.instantSync('settings starting');
SettingsModel settingsModel = SettingsModel();
List<SettingEntry> entries = await SettingEntryParser.parseFile(
settingsModel, 'pkg/data/settings.config');
// We handle license setting separately as it is not a component.
entries.add(LicenseSettingEntry());
Widget app = MaterialApp(
home: AllSettings(entries),
routes: _buildRoutes(settingsModel, entries),
);
app = ScopedModel<SettingsModel>(
model: settingsModel,
child: app,
);
runApp(app);
Timeline.instantSync('settings started');
}
Map<String, WidgetBuilder> _buildRoutes(
SettingsModel settingsModel, List<SettingEntry> entries) {
Map<String, WidgetBuilder> routes = {};
for (SettingEntry entry in entries) {
routes[entry.route] = entry.getRouteBuilder(settingsModel);
}
return routes;
}