import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:flutter_markdown/flutter_markdown.dart'; import 'globals.dart' as globals; import 'main_drawer.dart'; abstract class MarkdownPage extends StatefulWidget { const MarkdownPage( {super.key, required this.title, required this.route, required this.file}); final String title; final Future file; final String route; @override // ignore: library_private_types_in_public_api _MarkdownPageState createState() => _MarkdownPageState(); } class _MarkdownPageState extends State { _MarkdownPageState(); late final String title; late final String route; late final Future file; String pageData = ''; @override void initState() { super.initState(); title = widget.title; route = widget.route; file = widget.file; } @override Widget build(BuildContext context) { file.then((String fileSync) { rootBundle .loadString(fileSync, cache: !globals.isDevelopment) .then((String pageData) { setState(() { this.pageData = pageData; }); }); }); return Scaffold( appBar: AppBar(title: Text(title)), drawer: MainDrawer(context, route), body: Markdown(data: pageData)); } }