123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import 'dart:io';
- import 'package:app_flowy/startup/startup.dart';
- import 'package:app_flowy/workspace/application/doc/doc_edit_bloc.dart';
- import 'package:app_flowy/workspace/domain/i_doc.dart';
- import 'package:flowy_editor/flowy_editor.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_bloc/flutter_bloc.dart';
- // ignore: must_be_immutable
- class DocPage extends StatefulWidget {
- late EditorController controller;
- late DocEditBloc editBloc;
- final FlowyDoc doc;
- DocPage({Key? key, required this.doc}) : super(key: key) {
- editBloc = getIt<DocEditBloc>(param1: doc.id);
- controller = EditorController(
- document: doc.document,
- selection: const TextSelection.collapsed(offset: 0),
- );
- }
- @override
- State<DocPage> createState() => _DocPageState();
- }
- class _DocPageState extends State<DocPage> {
- final FocusNode _focusNode = FocusNode();
- @override
- Widget build(BuildContext context) {
- return BlocProvider.value(
- value: widget.editBloc,
- child: BlocBuilder<DocEditBloc, DocEditState>(
- builder: (ctx, state) {
- return Column(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- _renderEditor(widget.controller),
- _renderToolbar(widget.controller),
- ],
- );
- },
- ),
- );
- }
- @override
- Future<void> dispose() async {
- widget.editBloc.add(const DocEditEvent.close());
- widget.editBloc.close();
- super.dispose();
- await widget.doc.close();
- }
- Widget _renderEditor(EditorController controller) {
- final editor = FlowyEditor(
- controller: controller,
- focusNode: _focusNode,
- scrollable: true,
- autoFocus: false,
- expands: false,
- padding: const EdgeInsets.symmetric(horizontal: 8.0),
- readOnly: false,
- scrollBottomInset: 0,
- scrollController: ScrollController(),
- );
- return Expanded(
- child: Padding(padding: const EdgeInsets.all(10), child: editor),
- );
- }
- Widget _renderToolbar(EditorController controller) {
- return FlowyToolbar.basic(
- controller: controller,
- onImageSelectCallback: _onImageSelection,
- );
- }
- Future<String> _onImageSelection(File file) {
- throw UnimplementedError();
- }
- }
|