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