wip: Sicherungs-Commit aller Änderungen seit April + Arbeitsstruktur (CLAUDE.md, ROADMAP.md, PROGRESS.md, Autopilot)
6 Wochen uncommittete Arbeit (Voice-Channels, LiveKit-Manager, Settings-Modal u.v.m.) als ein WIP-Commit gesichert, damit nichts verloren geht und der Pi den aktuellen Stand klonen kann. Thematische Aufarbeitung: siehe ROADMAP M0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CPrAGBxBT6GfPXzeWQ4AXb
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,52 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:pyramid/features/rooms/rooms_page.dart';
|
||||
|
||||
final sidebarWidthProvider = StateProvider<double>((ref) => 280);
|
||||
|
||||
class PanelLayout extends ConsumerWidget {
|
||||
final Widget mainContent;
|
||||
const PanelLayout({super.key, required this.mainContent});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final sidebarWidth = ref.watch(sidebarWidthProvider);
|
||||
|
||||
return Row(
|
||||
children: [
|
||||
SizedBox(
|
||||
width: sidebarWidth,
|
||||
child: const RoomsPage(),
|
||||
),
|
||||
_ResizeDivider(
|
||||
onDrag: (delta) {
|
||||
final notifier = ref.read(sidebarWidthProvider.notifier);
|
||||
notifier.state =
|
||||
(notifier.state + delta).clamp(180.0, 480.0);
|
||||
},
|
||||
),
|
||||
Expanded(child: mainContent),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _ResizeDivider extends StatelessWidget {
|
||||
final ValueChanged<double> onDrag;
|
||||
const _ResizeDivider({required this.onDrag});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GestureDetector(
|
||||
behavior: HitTestBehavior.translucent,
|
||||
onHorizontalDragUpdate: (d) => onDrag(d.delta.dx),
|
||||
child: MouseRegion(
|
||||
cursor: SystemMouseCursors.resizeColumn,
|
||||
child: Container(
|
||||
width: 6,
|
||||
color: Theme.of(context).dividerColor,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:pyramid/layout/panel_layout.dart';
|
||||
|
||||
class ShellPage extends ConsumerWidget {
|
||||
final Widget child;
|
||||
const ShellPage({super.key, required this.child});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final isWide = MediaQuery.sizeOf(context).width >= 700;
|
||||
|
||||
return Scaffold(
|
||||
body: isWide
|
||||
? PanelLayout(mainContent: child)
|
||||
: child,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user