2021-07-24 14:05:49 +08:00
|
|
|
import 'dart:io';
|
|
|
|
|
2021-07-24 18:55:13 +08:00
|
|
|
import 'package:app_flowy/startup/startup.dart';
|
2021-09-11 21:30:58 +08:00
|
|
|
import 'package:app_flowy/workspace/application/doc/doc_edit_bloc.dart';
|
2021-07-24 14:05:49 +08:00
|
|
|
import 'package:app_flowy/workspace/domain/i_doc.dart';
|
|
|
|
import 'package:flowy_editor/flowy_editor.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
2021-07-24 18:55:13 +08:00
|
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
2021-07-24 14:05:49 +08:00
|
|
|
|
2021-09-01 22:50:22 +08:00
|
|
|
// ignore: must_be_immutable
|
2021-09-12 22:19:59 +08:00
|
|
|
class DocPage extends StatelessWidget {
|
2021-07-24 14:05:49 +08:00
|
|
|
final FocusNode _focusNode = FocusNode();
|
2021-07-24 18:55:13 +08:00
|
|
|
late EditorController controller;
|
2021-09-11 20:09:46 +08:00
|
|
|
final FlowyDoc doc;
|
2021-07-24 14:05:49 +08:00
|
|
|
|
2021-09-12 22:19:59 +08:00
|
|
|
DocPage({Key? key, required this.doc}) : super(key: key) {
|
2021-09-21 15:07:07 +08:00
|
|
|
// getIt<EditorDeltaSender>(param1: doc.id))
|
2021-09-14 16:22:44 +08:00
|
|
|
|
2021-07-24 18:55:13 +08:00
|
|
|
controller = EditorController(
|
2021-09-21 15:07:07 +08:00
|
|
|
document: doc.data,
|
|
|
|
selection: const TextSelection.collapsed(offset: 0),
|
|
|
|
);
|
2021-07-24 18:55:13 +08:00
|
|
|
}
|
2021-07-24 14:05:49 +08:00
|
|
|
|
2021-07-24 18:55:13 +08:00
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return BlocProvider(
|
2021-09-11 21:30:58 +08:00
|
|
|
create: (context) => getIt<DocEditBloc>(param1: doc.id),
|
|
|
|
child: BlocBuilder<DocEditBloc, DocEditState>(
|
2021-07-24 22:27:24 +08:00
|
|
|
builder: (ctx, state) {
|
|
|
|
return Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
children: [
|
|
|
|
_renderEditor(controller),
|
|
|
|
_renderToolbar(controller),
|
|
|
|
],
|
|
|
|
);
|
|
|
|
},
|
2021-07-24 18:55:13 +08:00
|
|
|
),
|
2021-07-24 14:05:49 +08:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
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(),
|
|
|
|
);
|
2021-07-26 16:35:51 +08:00
|
|
|
return Expanded(
|
|
|
|
child: Padding(padding: const EdgeInsets.all(10), child: editor),
|
|
|
|
);
|
2021-07-24 14:05:49 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
Widget _renderToolbar(EditorController controller) {
|
|
|
|
return FlowyToolbar.basic(
|
|
|
|
controller: controller,
|
|
|
|
onImageSelectCallback: _onImageSelection,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<String> _onImageSelection(File file) {
|
|
|
|
throw UnimplementedError();
|
|
|
|
}
|
|
|
|
}
|