Files
accessible-ssh/lib/ui/views/tablet_screen.dart

72 lines
2.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:accessible_terminal/state/terminal_provider.dart';
import 'package:accessible_terminal/ui/views/connection_view.dart';
import 'package:accessible_terminal/ui/views/terminal_view.dart';
class TabletScreen extends ConsumerStatefulWidget {
const TabletScreen({super.key});
@override
ConsumerState<TabletScreen> createState() => _TabletScreenState();
}
class _TabletScreenState extends ConsumerState<TabletScreen> {
bool _isCreatingNew = false;
@override
Widget build(BuildContext context) {
final isConnected = ref.watch(connectionStateProvider);
return Scaffold(
body: Row(
children: [
// Left Panel: Saved Connections List
SizedBox(
width: 320,
child: SavedConnectionsList(
onCreateNew: () {
setState(() => _isCreatingNew = true);
},
),
),
const VerticalDivider(width: 1),
// Right Panel: Dynamic Content
Expanded(
child: Builder(
builder: (context) {
if (isConnected) {
return const TerminalView();
} else if (_isCreatingNew) {
return NewConnectionForm(
onCancel: () {
setState(() => _isCreatingNew = false);
},
);
} else {
return const Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.terminal, size: 64, color: Colors.grey),
SizedBox(height: 16),
Text(
'Select a connection from the list\nor create a new one.',
textAlign: TextAlign.center,
style: TextStyle(fontSize: 18, color: Colors.grey),
),
],
),
);
}
},
),
),
],
),
);
}
}