我在让我的GridView.builder同时滚动上面的两个小部件时遇到了麻烦.我只希望搜索栏保持在屏幕上,当我滚动.唯一的方法,我已经设法破解它是通过使用大小盒,但我希望它填补任何移动终端,它是上.

任何帮助将不胜感激.我已经用大写字母在代码中标记了我希望它滚动的点.

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

import '../widgets.dart/search_results_chip.dart';

class ItemSearchResults extends StatelessWidget {
  const ItemSearchResults({super.key});

  @override
  Widget build(BuildContext context) {
    return SafeArea(
        child: Column(
      children: [
        //search bar
        Row(
          children: [
            IconButton(
              onPressed: () {},
              icon: const Icon(Icons.arrow_back),
            ),
            Expanded(
              child: TextField(
                decoration: InputDecoration(
                    isCollapsed: true,
                    prefixIcon: const Icon(Icons.category),
                    suffixIcon: const Icon(Icons.search),
                    border: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(30))),
              ),
            ),
            IconButton(
                onPressed: () {}, icon: const Icon(Icons.filter_alt_outlined))
          ],
        ),

        SizedBox(
          height: 6,
        ),

        //search results
        //SCROLL FROM HERE
        Expanded(
          child: SingleChildScrollView(
            child: Column(
              children: [
                Container(
                  padding: const EdgeInsets.all(8),
                  height: 60,
                  child: ListView(
                    scrollDirection: Axis.horizontal,
                    children: const [
                      SearchResultsChip(
                          title: 'Free Delivery', showDropDown: false),
                      SearchResultsChip(
                        title: 'Price',
                        showDropDown: true,
                      ),
                      SearchResultsChip(
                          title: 'Estimated Delivery', showDropDown: true)
                    ],
                  ),
                ),

                //sort by
                Container(
                  decoration: BoxDecoration(
                    borderRadius: BorderRadius.circular(30),
                  ),
                  child: Row(
                    children: [
                      Text(
                        'Relevance',
                        style: TextStyle(color: Colors.white),
                      ),
                      IconButton(
                        onPressed: () {},
                        icon: Icon(
                          Icons.sort,
                          color: Colors.white,
                        ),
                      ),
                    ],
                  ),
                ),

                //Search Results
                Expanded(
                  child: GridView.builder(
                      itemCount: 10,
                      shrinkWrap: true,
                      physics: NeverScrollableScrollPhysics(),
                      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                          crossAxisCount: 2, crossAxisSpacing: 4),
                      itemBuilder: (context, index) {
                        return Column(
                          children: [
                            Expanded(
                              child: Container(
                                height: 150,
                                child: Image(
                                    height: 150,
                                    fit: BoxFit.cover,
                                    image: NetworkImage(
                                        'https://images.unsplash.com/photo-1633435597643-601bb3efc197?w=600&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTJ8fGVwb3h5JTIwdGFibGV8ZW58MHx8MHx8fDA%3D')),
                              ),
                            )
                          ],
                        );
                      }),
                )
              ],
            ),
          ),
        )
      ],
    ));
  }
}

推荐答案

SizedBox而不是Expanded包你的GridView.builder

 //Search Results
  SizedBox(
    child: GridView.builder(),
  ),

Result Screen - image

Flutter相关问答推荐

创建多个具有适当填充和对齐的按钮的最佳方法

在Flutter中创建具有固定行的压缩水平列表

功能不起作用的Flutter 块复制

在Flutter 中创建自定义Snackbar类

如何在Flutter 中不从getX库中初始化GetxController中的变量

从外部类动态更改IconButton的图标

在Ffltter中,我已经使用了Ffltter_BLOC Cupit和Pusher,但当获得新数据时,UI没有更新

Flutter-Riverpod:如何只从提供者读取一次值

在带有 flutter 的 Native Android 中,EventChannel.EventSink 始终为 null

Flutter http 请求获取 null

自定义类提供程序 Riverpod Flutter 中的可变变量

在使用 Android 12+ 的真实 Android 设备上,SingleChildScrollView 中最初位于视口之外的无响应 Web 视图

hooks_riverpod 有用途吗

Flutter蓝牙 - 如何通过蓝牙从设备中获取文件?

如何在向下滚动时隐藏顶部卡片并在向上滚动时出现?

如何在Flutter中制作带有波浪边框的圆圈来显示图像?

为什么 Flutter riverpod 直接分配不起作用但方法可以

如何使用列Flutter 中文本占用的空间来控制svg宽度

Flutter 在气泡聊天消息上对齐时间戳文本

如何将 pushNamed 与 Dismissible Widget 一起使用并查看背景透明第一页