72 lines
2.2 KiB
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),
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
),
|
||
|
|
),
|
||
|
|
],
|
||
|
|
),
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|