| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import 'dart:io';
- import 'package:flutter/material.dart';
- import 'package:pty/pty.dart';
- import 'package:xterm/flutter.dart';
- import 'package:xterm/xterm.dart';
- void main() {
- runApp(MyApp());
- }
- class MyApp extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- title: 'xterm.dart demo',
- theme: ThemeData(
- primarySwatch: Colors.blue,
- visualDensity: VisualDensity.adaptivePlatformDensity,
- ),
- home: LocalTerminal(),
- );
- }
- }
- class LocalTerminalBackend extends TerminalBackend {
- LocalTerminalBackend();
- final pty = PseudoTerminal.start(
- '/system/bin/sh',
- [],
- blocking: false,
- environment: Platform.environment,
- );
- @override
- Future<int> get exitCode => pty.exitCode;
- @override
- void init() {
- pty.init();
- }
- @override
- Stream<String> get out => pty.out;
- @override
- void resize(int width, int height, int pixelWidth, int pixelHeight) {
- pty.resize(width, height);
- }
- @override
- void write(String input) {
- pty.write(input);
- }
- @override
- void terminate() {
- // client.disconnect('terminate');
- }
- @override
- void ackProcessed() {
- // NOOP
- }
- }
- class LocalTerminal extends StatefulWidget {
- const LocalTerminal({Key? key}) : super(key: key);
- @override
- _LocalTerminalState createState() => _LocalTerminalState();
- }
- class _LocalTerminalState extends State<LocalTerminal> {
- final terminal = Terminal(maxLines: 10000, backend: LocalTerminalBackend());
- @override
- void initState() {
- super.initState();
- }
- void onInput(String input) {
- print('input: $input');
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- body: SafeArea(
- child: TerminalView(
- terminal: terminal,
- ),
- ),
- );
- }
- }
|