blob: afc2aa1125c372b5b1fb4b5300715bf502a6b27b [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. 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:nnbd_migration/src/preview/pages.dart';
import 'package:nnbd_migration/src/preview/preview_site.dart';
/// A page displayed on the preview site.
abstract class PreviewPage extends Page {
/// The site containing the page.
final PreviewSite site;
/// Initialize a newly created page within the given [site]. The [id] is the
/// portion of the path to the page that follows the initial slash ('/').
PreviewPage(this.site, String id) : super(id);
/// Whether pages of this type require authorization.
bool get requiresAuth;
/// Generate the content of the body tag.
void generateBody(Map<String, String> params);
/// Generate the content of the head tag.
void generateHead() {
buf.writeln('<meta charset="utf-8">');
buf.writeln('<meta name="viewport" content="width=device-width, '
'initial-scale=1.0">');
buf.writeln('<title>${site.title}</title>');
}
@override
Future<void> generatePage(Map<String, String> params) async {
buf.writeln('<!DOCTYPE html><html lang="en">');
buf.writeln('<head>');
buf.writeln('</head>');
generateHead();
buf.writeln('<body>');
generateBody(params);
buf.writeln('</body>');
buf.writeln('</html>');
}
}