Added auto close slidable

This commit is contained in:
Juan Gilsanz Polo
2024-02-26 10:46:45 +01:00
parent a3bbdd6198
commit e127f00762
5 changed files with 82 additions and 69 deletions

View File

@@ -1,3 +1,4 @@
class ConfigOptions {
static const int listLimit = 20;
static const String slidableGroupTag = "bookmarksSlidable";
}

View File

@@ -7,6 +7,7 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:linkdy/screens/bookmarks/provider/favicon_loader.provider.dart';
import 'package:linkdy/config/options.dart';
import 'package:linkdy/i18n/strings.g.dart';
import 'package:linkdy/models/data/bookmarks.dart';
import 'package:linkdy/providers/app_status.provider.dart';
@@ -40,6 +41,8 @@ class BookmarkItem extends ConsumerWidget {
}
return Slidable(
key: ValueKey(bookmark.id!),
groupTag: ConfigOptions.slidableGroupTag,
startActionPane: ActionPane(
motion: const DrawerMotion(),
extentRatio: 0.5,

View File

@@ -2,6 +2,7 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:linkdy/constants/enums.dart';
import 'package:linkdy/screens/bookmarks/provider/bookmarks.provider.dart';
@@ -106,7 +107,8 @@ class BookmarksScreen extends ConsumerWidget {
),
),
if (bookmarks.bookmarks.isNotEmpty)
SliverList.builder(
SlidableAutoCloseBehavior(
child: SliverList.builder(
itemCount: bookmarks.bookmarks.length + 1,
itemBuilder: (context, index) {
// index == bookmarks.value!.content!.results!.length -> itemCount + 1
@@ -135,6 +137,7 @@ class BookmarksScreen extends ConsumerWidget {
);
},
),
),
],
),
),

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:linkdy/screens/bookmarks/provider/search_bookmarks.provider.dart';
import 'package:linkdy/screens/bookmarks/ui/bookmark_item.dart';
@@ -101,6 +102,7 @@ class SearchBookmarksScreen extends ConsumerWidget {
return NotificationListener(
onNotification: scrollListener,
child: SlidableAutoCloseBehavior(
child: ListView.builder(
itemCount: provider.loadingMore ? provider.bookmarks.length + 1 : provider.bookmarks.length,
itemBuilder: (context, index) {
@@ -125,6 +127,7 @@ class SearchBookmarksScreen extends ConsumerWidget {
);
},
),
),
);
},
),

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:linkdy/screens/bookmarks/ui/bookmark_item.dart';
import 'package:linkdy/screens/bookmarks/ui/delete_bookmark_modal.dart';
@@ -115,7 +116,8 @@ class TagBookmarksScreenState extends ConsumerState<TagBookmarksScreen> {
),
),
if (provider.bookmarks.isNotEmpty)
SliverList.builder(
SlidableAutoCloseBehavior(
child: SliverList.builder(
itemCount:
provider.loadingMore == true ? provider.bookmarks.length + 1 : provider.bookmarks.length,
itemBuilder: (context, index) {
@@ -140,6 +142,7 @@ class TagBookmarksScreenState extends ConsumerState<TagBookmarksScreen> {
);
},
),
),
],
),
),