1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| import 'package:flutter/material.dart'; import 'package:flutter_editor_hub/editor_hub_controller.dart'; import 'package:flutter_editor_hub/keyboard_event_widget.dart';
class EditorHubWidget extends StatefulWidget {
final EditorHubController controller;
final Widget editorChild;
final Widget navbarChild;
final List<Widget> panelChildren;
const EditorHubWidget({ required this.controller, required this.editorChild, required this.navbarChild, required this.panelChildren, super.key });
@override State<EditorHubWidget> createState() => EditorHubWidgetState();
}
class EditorHubWidgetState extends State<EditorHubWidget> {
@override Widget build(BuildContext context) { return PopScope( canPop: widget.controller.popScopeCanPop(), onPopInvoked: widget.controller.popScopePopInvoked, child: KeyboardEventWidget( onKbHiding: (bm){ widget.controller.keyboardHiding(bm); }, onKbShowing: (bm){ widget.controller.keyboardShowing(bm); }, onKbHideEnd: (bm) { widget.controller.resetState(); }, onKbShowEnd: (bm) { widget.controller.resetState(); }, child: Column( children:[ Expanded( child: widget.editorChild ), widget.navbarChild, slidePanelBar() ] ) ) ); }
Widget slidePanelBar() { return AnimatedContainer( onEnd: (){ Future.delayed(const Duration(milliseconds: 50), () { widget.controller.panelSlideEnd(); }); }, duration: Duration(milliseconds: widget.controller.bottomAnimatedMilliseconds), height: widget.controller.panelBottomMargin, child: IndexedStack( alignment: Alignment.center, index: widget.controller.panelIndex, children: widget.panelChildren.map((e){ return SingleChildScrollView( child: e ); }).toList() ) ); }
@override void dispose() { super.dispose(); }
@override void initState() { super.initState(); widget.controller.initHubState(this); }
@override void setState(Function fn) { if (mounted) { super.setState((){ fn(); }); } } }
|