chore: fix warnings

This commit is contained in:
appflowy 2022-04-25 22:03:10 +08:00
parent 8b4c46f75b
commit d390ef9a3a
8 changed files with 53 additions and 29 deletions

View File

@ -17,6 +17,7 @@ part 'cell_service.freezed.dart';
typedef GridDefaultCellContext = GridCellContext<Cell>;
typedef GridSelectOptionCellContext = GridCellContext<SelectOptionContext>;
// ignore: must_be_immutable
class GridCellContext<T> extends Equatable {
final GridCell gridCell;
final GridCellCache cellCache;
@ -76,7 +77,6 @@ class GridCellContext<T> extends Equatable {
if (cellDataLoader.reloadOnFieldChanged) {
_onFieldChangedFn = () {
Log.info("reloadCellData ");
_loadData();
};
cellCache.addListener(cacheKey, _onFieldChangedFn!);
@ -200,6 +200,7 @@ class GridCellCacheKey {
abstract class GridCellFieldDelegate {
void onFieldChanged(void Function(String) callback);
void dispose();
}
class GridCellCache {
@ -279,6 +280,10 @@ class GridCellCache {
}
}
}
Future<void> dispose() async {
fieldDelegate.dispose();
}
}
class CellService {

View File

@ -55,8 +55,9 @@ class GridBloc extends Bloc<GridEvent, GridState> {
@override
Future<void> close() async {
await _gridService.closeGrid();
await fieldCache.dispose();
await cellCache.dispose();
await rowCache.dispose();
await fieldCache.dispose();
return super.close();
}

View File

@ -54,10 +54,14 @@ class FieldsNotifier extends ChangeNotifier {
List<Field> get fields => _fields;
}
typedef ChangesetListener = void Function(GridFieldChangeset);
class GridFieldCache {
final String gridId;
late final GridFieldsListener _fieldListener;
final FieldsNotifier _fieldNotifier = FieldsNotifier();
final List<ChangesetListener> _changesetListener = [];
GridFieldCache({required this.gridId}) {
_fieldListener = GridFieldsListener(gridId: gridId);
_fieldListener.start(onFieldsChanged: (result) {
@ -66,6 +70,9 @@ class GridFieldCache {
_deleteFields(changeset.deletedFields);
_insertFields(changeset.insertedFields);
_updateFields(changeset.updatedFields);
for (final listener in _changesetListener) {
listener(changeset);
}
},
(err) => Log.error(err),
);
@ -77,8 +84,6 @@ class GridFieldCache {
_fieldNotifier.dispose();
}
void applyChangeset(GridFieldChangeset changeset) {}
UnmodifiableListView<Field> get unmodifiableFields => UnmodifiableListView(_fieldNotifier.fields);
List<Field> get clonedFields => [..._fieldNotifier.fields];
@ -111,6 +116,17 @@ class GridFieldCache {
_fieldNotifier.removeListener(f);
}
void addChangesetListener(ChangesetListener listener) {
_changesetListener.add(listener);
}
void removeChangesetListener(ChangesetListener listener) {
final index = _changesetListener.indexWhere((element) => element == listener);
if (index != -1) {
_changesetListener.removeAt(index);
}
}
void _deleteFields(List<FieldOrder> deletedFields) {
if (deletedFields.isEmpty) {
return;
@ -172,14 +188,26 @@ class GridRowCacheDelegateImpl extends GridRowFieldDelegate {
class GridCellCacheDelegateImpl extends GridCellFieldDelegate {
final GridFieldCache _cache;
ChangesetListener? _changesetFn;
GridCellCacheDelegateImpl(GridFieldCache cache) : _cache = cache;
@override
void onFieldChanged(void Function(String) callback) {
_cache.addListener(onChanged: (fields) {
for (final field in fields) {
callback(field.id);
changesetFn(GridFieldChangeset changeset) {
for (final updatedField in changeset.updatedFields) {
callback(updatedField.id);
}
});
}
_cache.addChangesetListener(changesetFn);
_changesetFn = changesetFn;
}
@override
void dispose() {
if (_changesetFn != null) {
_cache.removeChangesetListener(_changesetFn!);
_changesetFn = null;
}
}
}

View File

@ -3,6 +3,7 @@ import 'package:app_flowy/workspace/application/grid/prelude.dart';
import 'package:app_flowy/workspace/presentation/plugins/grid/src/widgets/cell/cell_builder.dart';
import 'package:flowy_infra/theme.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
// ignore: unused_import
import 'package:flowy_sdk/log.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@ -43,7 +44,7 @@ class _SingleSelectCellState extends State<SingleSelectCell> {
@override
void initState() {
Log.info("init widget $hashCode");
// Log.trace("init widget $hashCode");
_cellBloc = getIt<SelectionCellBloc>(param1: widget.cellContext)..add(const SelectionCellEvent.initial());
super.initState();
}
@ -51,7 +52,7 @@ class _SingleSelectCellState extends State<SingleSelectCell> {
@override
Widget build(BuildContext context) {
final theme = context.watch<AppTheme>();
Log.info("build widget $hashCode");
// Log.trace("build widget $hashCode");
return BlocProvider.value(
value: _cellBloc,
child: BlocBuilder<SelectionCellBloc, SelectionCellState>(
@ -83,18 +84,14 @@ class _SingleSelectCellState extends State<SingleSelectCell> {
@override
void didUpdateWidget(covariant SingleSelectCell oldWidget) {
if (oldWidget.cellContext != widget.cellContext) {
// setState(() {
// });
// _cellBloc = getIt<SelectionCellBloc>(param1: widget.cellContext)..add(const SelectionCellEvent.initial());
Log.info("did update widget $hashCode");
// Log.trace("did update widget $hashCode");
}
super.didUpdateWidget(oldWidget);
}
@override
Future<void> dispose() async {
Log.info("dispose widget $hashCode");
// Log.trace("dispose widget $hashCode");
_cellBloc.close();
super.dispose();
}

View File

@ -31,7 +31,7 @@ class Log {
}
static void trace(dynamic msg) {
Log.shared._logger.d(msg);
Log.shared._logger.v(msg);
}
static void error(dynamic msg) {

View File

@ -3,17 +3,15 @@ use crate::manager::GridUser;
use crate::services::block_meta_editor::ClientGridBlockMetaEditor;
use crate::services::persistence::block_index::BlockIndexPersistence;
use crate::services::row::{group_row_orders, GridBlockSnapshot};
use std::borrow::Cow;
use dashmap::DashMap;
use flowy_error::{FlowyError, FlowyResult};
use flowy_error::FlowyResult;
use flowy_grid_data_model::entities::{
Cell, CellChangeset, CellMeta, GridBlockMeta, GridBlockMetaChangeset, GridRowsChangeset, IndexRowOrder, Row,
RowMeta, RowMetaChangeset, RowOrder, UpdatedRowOrder,
CellChangeset, CellMeta, GridBlockMeta, GridBlockMetaChangeset, GridRowsChangeset, IndexRowOrder, Row, RowMeta,
RowMetaChangeset, RowOrder, UpdatedRowOrder,
};
use flowy_revision::disk::SQLiteGridBlockMetaRevisionPersistence;
use flowy_revision::{RevisionManager, RevisionPersistence};
use lib_infra::future::FutureResult;
use std::borrow::Cow;
use std::collections::HashMap;
use std::sync::Arc;

View File

@ -430,11 +430,6 @@ impl ClientGridEditor {
self.grid_pad.read().await.delta_bytes()
}
async fn row_builder(&self, row_meta: Arc<RowMeta>) -> FlowyResult<Option<Row>> {
let field_metas = self.get_field_metas::<FieldOrder>(None).await?;
Ok(make_rows_from_row_metas(&field_metas, &[row_meta]).pop())
}
async fn modify<F>(&self, f: F) -> FlowyResult<()>
where
F: for<'a> FnOnce(&'a mut GridMetaPad) -> FlowyResult<Option<GridChangeset>>,

View File

@ -48,7 +48,7 @@ pub(crate) fn make_row_orders_from_row_metas(row_metas: &[Arc<RowMeta>]) -> Vec<
}
pub(crate) fn make_row_from_row_meta(fields: &[FieldMeta], row_meta: Arc<RowMeta>) -> Option<Row> {
make_rows_from_row_metas(fields, &vec![row_meta]).pop()
make_rows_from_row_metas(fields, &[row_meta]).pop()
}
pub(crate) fn make_rows_from_row_metas(fields: &[FieldMeta], row_metas: &[Arc<RowMeta>]) -> Vec<Row> {