edit_pannel.dart 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import 'package:app_flowy/home/application/edit_pannel/edit_pannel_bloc.dart';
  2. import 'package:app_flowy/home/domain/edit_context.dart';
  3. import 'package:app_flowy/startup/startup.dart';
  4. import 'package:dartz/dartz.dart';
  5. import 'package:flowy_infra_ui/style_widget/styled_bar_title.dart';
  6. import 'package:flowy_infra_ui/style_widget/styled_close_button.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:flutter_bloc/flutter_bloc.dart';
  9. import '../../home_sizes.dart';
  10. class EditPannel extends StatelessWidget {
  11. late final EditPannelContext editContext;
  12. final VoidCallback onEndEdit;
  13. EditPannel(
  14. {Key? key,
  15. required Option<EditPannelContext> context,
  16. required this.onEndEdit})
  17. : super(key: key) {
  18. editContext = context.fold(() => const BlankEditPannelContext(), (c) => c);
  19. }
  20. @override
  21. Widget build(BuildContext context) {
  22. return Container(
  23. color: Theme.of(context).colorScheme.primaryVariant,
  24. child: BlocProvider(
  25. create: (context) => getIt<EditPannelBloc>(),
  26. child: BlocBuilder<EditPannelBloc, EditPannelState>(
  27. builder: (context, state) {
  28. return Column(
  29. crossAxisAlignment: CrossAxisAlignment.stretch,
  30. children: [
  31. EditPannelTopBar(onClose: () => onEndEdit()),
  32. Expanded(
  33. child: editContext.child,
  34. ),
  35. ],
  36. );
  37. },
  38. ),
  39. ),
  40. );
  41. }
  42. }
  43. class EditPannelTopBar extends StatelessWidget {
  44. final VoidCallback onClose;
  45. const EditPannelTopBar({Key? key, required this.onClose}) : super(key: key);
  46. @override
  47. Widget build(BuildContext context) {
  48. return SizedBox(
  49. height: HomeSizes.editPannelTopBarHeight,
  50. child: Padding(
  51. padding: const EdgeInsets.all(8.0),
  52. child: Row(
  53. children: [
  54. const StyleBarTitle(
  55. title: 'Title',
  56. ),
  57. const Spacer(),
  58. StyleCloseButton(onPressed: onClose),
  59. ],
  60. ),
  61. ),
  62. );
  63. }
  64. }