terminui 0.2.0 copy "terminui: ^0.2.0" to clipboard
terminui: ^0.2.0 copied to clipboard

An extensible and customizable terminal like view to be interacted with commands.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:terminui/terminui.dart';

class MediaQueryWidthCommand extends TerminuiCommand<BuildContext> {
  @override
  String get description => 'Prints the width of the media query.';

  @override
  String get name => 'w';

  @override
  (String?, String) execute(BuildContext subject, _) {
    final width = MediaQuery.of(subject).size.width;

    return (null, 'Width: $width');
  }
}

class MediaQueryHeightCommand extends TerminuiCommand<BuildContext> {
  @override
  String get description => 'Prints the height of the media query.';

  @override
  String get name => 'h';

  @override
  (String?, String) execute(BuildContext subject, _) {
    final height = MediaQuery.of(subject).size.height;

    return (null, 'Height: $height');
  }
}

void main() {
  runApp(const MaterialApp(home: MyGameApp()));
}

class MyGameApp extends StatefulWidget {
  const MyGameApp({super.key});

  @override
  State<MyGameApp> createState() => _MyGameAppState();
}

class _MyGameAppState extends State<MyGameApp> {
  late final FocusNode _node;
  late final KeyboardEventEmitter _keyboardEventEmitter;

  @override
  void initState() {
    super.initState();

    _node = FocusNode()..requestFocus();

    _keyboardEventEmitter = KeyboardEventEmitter();
    _node.onKeyEvent = (_, event) {
      _keyboardEventEmitter.emit(event);

      return KeyEventResult.handled;
    };
  }

  @override
  void dispose() {
    super.dispose();

    _node.dispose();
    _keyboardEventEmitter.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Focus(
        focusNode: _node,
        child: Builder(
          builder: (context) {
            return TerminuiView<BuildContext>(
              onClose: () {},
              commands: [
                MediaQueryWidthCommand(),
                MediaQueryHeightCommand(),
              ],
              subject: context,
              keyboardEventEmitter: _keyboardEventEmitter,
            );
          },
        ),
      ),
    );
  }
}
1
likes
130
points
2.46k
downloads

Publisher

unverified uploader

Weekly Downloads

An extensible and customizable terminal like view to be interacted with commands.

Documentation

API reference

License

MIT (license)

Dependencies

args, flutter

More

Packages that depend on terminui