71 lines
1.9 KiB
Dart
Raw Normal View History

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;
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();
}
}