main.dart 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import 'package:flutter/material.dart';
  2. import 'package:xterm/flutter.dart';
  3. import 'package:xterm/xterm.dart';
  4. void main() {
  5. runApp(MyApp());
  6. }
  7. class MyApp extends StatelessWidget {
  8. @override
  9. Widget build(BuildContext context) {
  10. return MaterialApp(
  11. title: 'xterm.dart demo',
  12. theme: ThemeData(
  13. primarySwatch: Colors.blue,
  14. visualDensity: VisualDensity.adaptivePlatformDensity,
  15. ),
  16. home: MyHomePage(),
  17. );
  18. }
  19. }
  20. class MyHomePage extends StatefulWidget {
  21. MyHomePage({Key key}) : super(key: key);
  22. @override
  23. _MyHomePageState createState() => _MyHomePageState();
  24. }
  25. class _MyHomePageState extends State<MyHomePage> {
  26. Terminal terminal;
  27. @override
  28. void initState() {
  29. super.initState();
  30. terminal = Terminal(
  31. onInput: onInput,
  32. maxLines: 10000,
  33. );
  34. terminal.write('xterm.dart demo');
  35. terminal.write('\r\n');
  36. terminal.write('\$ ');
  37. }
  38. void onInput(String input) {
  39. if (input == '\r') {
  40. terminal.write('\r\n');
  41. terminal.write('\$ ');
  42. } else if (input.codeUnitAt(0) == 127) {
  43. terminal.buffer.eraseCharacters(1);
  44. terminal.buffer.backspace();
  45. terminal.refresh();
  46. return;
  47. } else {
  48. terminal.write(input);
  49. }
  50. }
  51. @override
  52. Widget build(BuildContext context) {
  53. return Scaffold(
  54. body: SafeArea(
  55. child: TerminalView(terminal: terminal),
  56. ),
  57. );
  58. }
  59. }