dartterm/lib/main.dart

63 lines
1.4 KiB
Dart

import 'package:dartterm/colors.dart';
import 'package:dartterm/game.dart' as game;
import 'package:dartterm/terminal.dart' as terminal;
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
void main() {
// terminal.at(0, 0).puts("Hello, world!");
runApp(const App());
}
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'DARTTERM',
theme: ThemeData(
useMaterial3: true, scaffoldBackgroundColor: Palette.defaultBg),
builder: (BuildContext context, Widget? child) {
return MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
child: child!);
},
home: const Viewer(),
);
}
}
class Viewer extends StatefulWidget {
const Viewer({super.key});
@override
State<Viewer> createState() => _ViewerState();
}
class _ViewerState extends State<Viewer> {
Ticker? ticker;
@override
void initState() {
super.initState();
ticker = Ticker(tick);
ticker!.start();
game.main();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: AspectRatio(
aspectRatio: terminal.width / terminal.height,
child: terminal.toWidget(context)),
));
}
void tick(Duration elapsed) {
setState(() {/* state changed, force a redraw */});
}
}