| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | import 'package:app_flowy/startup/startup.dart';import 'package:app_flowy/workspace/application/view/doc_watch_bloc.dart';import 'package:app_flowy/workspace/domain/page_stack/page_stack.dart';import 'package:app_flowy/workspace/presentation/doc/editor_page.dart';import 'package:flowy_infra_ui/widget/error_page.dart';import 'package:flowy_sdk/protobuf/flowy-workspace/view_create.pb.dart';import 'package:flutter/material.dart';import 'package:flutter_bloc/flutter_bloc.dart';import 'package:flowy_infra_ui/style_widget/progress_indicator.dart';class DocPage extends HomeStackWidget {  const DocPage({Key? key, required DocPageStackView stackView})      : super(key: key, stackView: stackView);  @override  _DocPageState createState() => _DocPageState();}class _DocPageState extends State<DocPage> {  @override  Widget build(BuildContext context) {    final stackView = widget.stackView as DocPageStackView;    return MultiBlocProvider(      providers: [        BlocProvider<DocWatchBloc>(            create: (context) => getIt<DocWatchBloc>(param1: stackView.view.id)              ..add(const DocWatchEvent.started())),      ],      child:          BlocBuilder<DocWatchBloc, DocWatchState>(builder: (context, state) {        assert(widget.stackView is DocPageStackView);        return state.map(          loading: (_) => const FlowyProgressIndicator(),          loadDoc: (s) => EditorPage(doc: s.doc),          loadFail: (s) => FlowyErrorPage(s.error.toString()),        );      }),    );  }  @override  void dispose() {    super.dispose();  }  @override  void deactivate() {    super.deactivate();  }  @override  void didUpdateWidget(covariant DocPage oldWidget) {    super.didUpdateWidget(oldWidget);  }}class DocPageStackView extends HomeStackView {  final View view;  DocPageStackView(this.view)      : super(          type: view.viewType,          title: view.name,          identifier: view.id,        );  @override  List<Object> get props => [view.id, type];}
 |