mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: save scroll pos
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
import 'package:flowy_sdk/log.dart';
|
import 'package:flowy_sdk/log.dart';
|
||||||
import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
|
import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
|
||||||
import 'package:flowy_sdk/protobuf/flowy-grid/protobuf.dart';
|
import 'package:flowy_sdk/protobuf/flowy-grid/protobuf.dart';
|
||||||
|
import 'package:protobuf/protobuf.dart';
|
||||||
import 'group_listener.dart';
|
import 'group_listener.dart';
|
||||||
|
|
||||||
typedef OnGroupError = void Function(FlowyError);
|
typedef OnGroupError = void Function(FlowyError);
|
||||||
@ -42,7 +42,6 @@ class GroupController {
|
|||||||
|
|
||||||
for (final insertedRow in changeset.insertedRows) {
|
for (final insertedRow in changeset.insertedRows) {
|
||||||
final index = insertedRow.hasIndex() ? insertedRow.index : null;
|
final index = insertedRow.hasIndex() ? insertedRow.index : null;
|
||||||
|
|
||||||
if (insertedRow.hasIndex() &&
|
if (insertedRow.hasIndex() &&
|
||||||
group.rows.length > insertedRow.index) {
|
group.rows.length > insertedRow.index) {
|
||||||
group.rows.insert(insertedRow.index, insertedRow.row);
|
group.rows.insert(insertedRow.index, insertedRow.row);
|
||||||
@ -50,11 +49,7 @@ class GroupController {
|
|||||||
group.rows.add(insertedRow.row);
|
group.rows.add(insertedRow.row);
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate.insertRow(
|
delegate.insertRow(group, insertedRow.row, index);
|
||||||
group,
|
|
||||||
insertedRow.row,
|
|
||||||
index,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final updatedRow in changeset.updatedRows) {
|
for (final updatedRow in changeset.updatedRows) {
|
||||||
@ -74,6 +69,29 @@ class GroupController {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GroupChangesetPB _transformChangeset(GroupChangesetPB changeset) {
|
||||||
|
// final insertedRows = changeset.insertedRows
|
||||||
|
// .where(
|
||||||
|
// (delete) => !changeset.deletedRows.contains(delete.row.id),
|
||||||
|
// )
|
||||||
|
// .toList();
|
||||||
|
|
||||||
|
// final deletedRows = changeset.deletedRows
|
||||||
|
// .where((deletedRowId) =>
|
||||||
|
// changeset.insertedRows
|
||||||
|
// .indexWhere((insert) => insert.row.id == deletedRowId) ==
|
||||||
|
// -1)
|
||||||
|
// .toList();
|
||||||
|
|
||||||
|
// return changeset.rebuild((rebuildChangeset) {
|
||||||
|
// rebuildChangeset.insertedRows.clear();
|
||||||
|
// rebuildChangeset.insertedRows.addAll(insertedRows);
|
||||||
|
|
||||||
|
// rebuildChangeset.deletedRows.clear();
|
||||||
|
// rebuildChangeset.deletedRows.addAll(deletedRows);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
Future<void> dispose() async {
|
Future<void> dispose() async {
|
||||||
_listener.stop();
|
_listener.stop();
|
||||||
}
|
}
|
||||||
|
@ -184,7 +184,7 @@ class _AFBoardContentState extends State<AFBoardContent> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
final reorderFlex = ReorderFlex(
|
final reorderFlex = ReorderFlex(
|
||||||
key: widget.key,
|
key: const PageStorageKey<String>('AFBoardContent'),
|
||||||
config: widget.reorderFlexConfig,
|
config: widget.reorderFlexConfig,
|
||||||
scrollController: widget.scrollController,
|
scrollController: widget.scrollController,
|
||||||
onDragStarted: widget.onDragStarted,
|
onDragStarted: widget.onDragStarted,
|
||||||
@ -242,27 +242,23 @@ class _AFBoardContentState extends State<AFBoardContent> {
|
|||||||
value: widget.dataController.getColumnController(columnData.id),
|
value: widget.dataController.getColumnController(columnData.id),
|
||||||
child: Consumer<AFBoardColumnDataController>(
|
child: Consumer<AFBoardColumnDataController>(
|
||||||
builder: (context, value, child) {
|
builder: (context, value, child) {
|
||||||
final scrollController =
|
|
||||||
widget.columnState.scrollController(columnData.id);
|
|
||||||
final boardColumn = AFBoardColumnWidget(
|
final boardColumn = AFBoardColumnWidget(
|
||||||
key: ValueKey(columnData.id),
|
key: const PageStorageKey<String>('AFBoardColumnWidget'),
|
||||||
margin: _marginFromIndex(columnIndex),
|
margin: _marginFromIndex(columnIndex),
|
||||||
itemMargin: widget.config.columnItemPadding,
|
itemMargin: widget.config.columnItemPadding,
|
||||||
headerBuilder: _buildHeader,
|
headerBuilder: _buildHeader,
|
||||||
footBuilder: widget.footBuilder,
|
footBuilder: widget.footBuilder,
|
||||||
cardBuilder: widget.cardBuilder,
|
cardBuilder: widget.cardBuilder,
|
||||||
dataSource: dataSource,
|
dataSource: dataSource,
|
||||||
scrollController: scrollController,
|
scrollController: ScrollController(),
|
||||||
phantomController: widget.phantomController,
|
phantomController: widget.phantomController,
|
||||||
onReorder: widget.dataController.moveColumnItem,
|
onReorder: widget.dataController.moveColumnItem,
|
||||||
cornerRadius: widget.config.cornerRadius,
|
cornerRadius: widget.config.cornerRadius,
|
||||||
backgroundColor: widget.config.columnBackgroundColor,
|
backgroundColor: widget.config.columnBackgroundColor,
|
||||||
);
|
);
|
||||||
|
|
||||||
widget.columnState.addColumn(
|
widget.columnState
|
||||||
columnData.id,
|
.addColumn(columnData.id, boardColumn.globalKey);
|
||||||
boardColumn.globalKey,
|
|
||||||
);
|
|
||||||
|
|
||||||
return ConstrainedBox(
|
return ConstrainedBox(
|
||||||
constraints: widget.columnConstraints,
|
constraints: widget.columnConstraints,
|
||||||
@ -350,10 +346,4 @@ class BoardColumnState {
|
|||||||
final widget = flexGlobalKey.currentWidget as ReorderFlex;
|
final widget = flexGlobalKey.currentWidget as ReorderFlex;
|
||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
ScrollController scrollController(String columnId) {
|
|
||||||
ScrollController scrollController = ScrollController();
|
|
||||||
|
|
||||||
return scrollController;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,6 @@ class AFBoardColumnWidget extends StatefulWidget {
|
|||||||
final AFBoardColumnDataDataSource dataSource;
|
final AFBoardColumnDataDataSource dataSource;
|
||||||
final ScrollController? scrollController;
|
final ScrollController? scrollController;
|
||||||
final ReorderFlexConfig config;
|
final ReorderFlexConfig config;
|
||||||
|
|
||||||
final OnColumnDragStarted? onDragStarted;
|
final OnColumnDragStarted? onDragStarted;
|
||||||
final OnColumnReorder onReorder;
|
final OnColumnReorder onReorder;
|
||||||
final OnColumnDragEnded? onDragEnded;
|
final OnColumnDragEnded? onDragEnded;
|
||||||
@ -88,7 +87,7 @@ class AFBoardColumnWidget extends StatefulWidget {
|
|||||||
|
|
||||||
final Color backgroundColor;
|
final Color backgroundColor;
|
||||||
|
|
||||||
final GlobalKey globalKey = GlobalKey();
|
final GlobalKey globalKey;
|
||||||
|
|
||||||
AFBoardColumnWidget({
|
AFBoardColumnWidget({
|
||||||
Key? key,
|
Key? key,
|
||||||
@ -98,14 +97,15 @@ class AFBoardColumnWidget extends StatefulWidget {
|
|||||||
required this.onReorder,
|
required this.onReorder,
|
||||||
required this.dataSource,
|
required this.dataSource,
|
||||||
required this.phantomController,
|
required this.phantomController,
|
||||||
this.onDragStarted,
|
|
||||||
this.scrollController,
|
this.scrollController,
|
||||||
|
this.onDragStarted,
|
||||||
this.onDragEnded,
|
this.onDragEnded,
|
||||||
this.margin = EdgeInsets.zero,
|
this.margin = EdgeInsets.zero,
|
||||||
this.itemMargin = EdgeInsets.zero,
|
this.itemMargin = EdgeInsets.zero,
|
||||||
this.cornerRadius = 0.0,
|
this.cornerRadius = 0.0,
|
||||||
this.backgroundColor = Colors.transparent,
|
this.backgroundColor = Colors.transparent,
|
||||||
}) : config = const ReorderFlexConfig(),
|
}) : globalKey = GlobalKey(),
|
||||||
|
config = const ReorderFlexConfig(),
|
||||||
super(key: key);
|
super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -115,7 +115,6 @@ class AFBoardColumnWidget extends StatefulWidget {
|
|||||||
class _AFBoardColumnWidgetState extends State<AFBoardColumnWidget> {
|
class _AFBoardColumnWidgetState extends State<AFBoardColumnWidget> {
|
||||||
final GlobalKey _columnOverlayKey =
|
final GlobalKey _columnOverlayKey =
|
||||||
GlobalKey(debugLabel: '$AFBoardColumnWidget overlay key');
|
GlobalKey(debugLabel: '$AFBoardColumnWidget overlay key');
|
||||||
|
|
||||||
late BoardOverlayEntry _overlayEntry;
|
late BoardOverlayEntry _overlayEntry;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
Reference in New Issue
Block a user