feat: use Gridview.builder (#1708)

This commit is contained in:
abichinger 2023-01-18 07:21:50 +01:00 committed by GitHub
parent 1b654e556f
commit 3d56a0a843
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,13 +1,12 @@
import 'package:flowy_infra_ui/style_widget/scrolling/styled_scroll_bar.dart'; import 'package:flowy_infra_ui/style_widget/scrolling/styled_scroll_bar.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'models/category_models.dart';
import 'config.dart'; import 'config.dart';
import 'models/emoji_model.dart';
import 'emoji_picker.dart'; import 'emoji_picker.dart';
import 'emoji_picker_builder.dart'; import 'emoji_picker_builder.dart';
import 'emoji_view_state.dart'; import 'emoji_view_state.dart';
import 'models/category_models.dart';
import 'models/emoji_model.dart';
class DefaultEmojiPickerView extends EmojiPickerBuilder { class DefaultEmojiPickerView extends EmojiPickerBuilder {
const DefaultEmojiPickerView(Config config, EmojiViewState state, {Key? key}) const DefaultEmojiPickerView(Config config, EmojiViewState state, {Key? key})
@ -23,8 +22,6 @@ class DefaultEmojiPickerViewState extends State<DefaultEmojiPickerView>
TabController? _tabController; TabController? _tabController;
final TextEditingController _emojiController = TextEditingController(); final TextEditingController _emojiController = TextEditingController();
final FocusNode _emojiFocusNode = FocusNode(); final FocusNode _emojiFocusNode = FocusNode();
final CategoryEmoji _categoryEmoji =
CategoryEmoji(Category.SEARCH, List.empty(growable: true));
CategoryEmoji searchEmojiList = CategoryEmoji(Category.SEARCH, <Emoji>[]); CategoryEmoji searchEmojiList = CategoryEmoji(Category.SEARCH, <Emoji>[]);
@override @override
@ -212,14 +209,15 @@ class DefaultEmojiPickerViewState extends State<DefaultEmojiPickerView>
Widget _buildButtonWidget( Widget _buildButtonWidget(
{required VoidCallback onPressed, required Widget child}) { {required VoidCallback onPressed, required Widget child}) {
if (widget.config.buttonMode == ButtonMode.MATERIAL) { if (widget.config.buttonMode == ButtonMode.MATERIAL) {
return TextButton( return InkWell(
onPressed: onPressed, onTap: onPressed,
style: ButtonStyle(padding: MaterialStateProperty.all(EdgeInsets.zero)),
child: child, child: child,
); );
} }
return CupertinoButton( return GestureDetector(
padding: EdgeInsets.zero, onPressed: onPressed, child: child); onTap: onPressed,
child: child,
);
} }
Widget _buildPage(double emojiSize, CategoryEmoji categoryEmoji) { Widget _buildPage(double emojiSize, CategoryEmoji categoryEmoji) {
@ -243,24 +241,20 @@ class DefaultEmojiPickerViewState extends State<DefaultEmojiPickerView>
trackColor: const Color(0xffDFE0E0), trackColor: const Color(0xffDFE0E0),
child: ScrollConfiguration( child: ScrollConfiguration(
behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false), behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false),
child: GridView.count( child: GridView.builder(
scrollDirection: Axis.vertical,
physics: const ScrollPhysics(),
controller: scrollController, controller: scrollController,
shrinkWrap: true,
// primary: true,
padding: const EdgeInsets.all(0), padding: const EdgeInsets.all(0),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: widget.config.columns, crossAxisCount: widget.config.columns,
mainAxisSpacing: widget.config.verticalSpacing, mainAxisSpacing: widget.config.verticalSpacing,
crossAxisSpacing: widget.config.horizontalSpacing, crossAxisSpacing: widget.config.horizontalSpacing,
children: _categoryEmoji.emoji.isNotEmpty ),
? _categoryEmoji.emoji itemCount: categoryEmoji.emoji.length,
.map<Widget>((e) => _buildEmoji(emojiSize, categoryEmoji, e)) itemBuilder: (context, index) {
.toList() final item = categoryEmoji.emoji[index];
: categoryEmoji.emoji return _buildEmoji(emojiSize, categoryEmoji, item);
.map<Widget>( },
(item) => _buildEmoji(emojiSize, categoryEmoji, item)) cacheExtent: 10,
.toList(),
), ),
), ),
); );