in my app I've a reorderable grid with some Container with rouded corner.
My problem is that while I'm changing the position of a container on the grid I can see a colored corner.

enter image description here

我知道这要归功于scaffold的BackmentColor属性.
我该如何处理?
这是我的代码:

ReorderableGridView.count(
  padding: const EdgeInsets.all(16),
  crossAxisSpacing: 4,
  mainAxisSpacing: 4,
  crossAxisCount: 2,
  childAspectRatio: 1,
  children: homeButtons
    .map((index) => Container(
      key: ValueKey(index),
      alignment: Alignment.center,
      width: double.infinity,
      decoration: BoxDecoration(
        gradient: const LinearGradient(
          colors: [
            Color(0xFF4D4D64),
            Color(0xFF363649)
          ],
          stops: [0, 1],
          begin: AlignmentDirectional(1, -1),
          end: AlignmentDirectional(-1, 1),
        ),
        borderRadius: BorderRadius.circular(30),
      ),
      child: InkWell(
        onTap: () {
          String path = '/$index';
          Get.toNamed(path);
        },
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            SvgPicture.asset(
              'assets/icons/$index.svg',
              color: Colors.red,
            ),
            Text(index),
          ],
        ),
      ),
    ))
    .toList(),
  onReorder: (oldIndex, newIndex) async {
    String path = homeButtons.removeAt(oldIndex);
    homeButtons.insert(newIndex, path);
    setState(() {
      box.remove(key);
      box.write(key, homeButtons);
    });
  },
),

以下是我try 过的:

我已try 添加带有 colored颜色 的父容器.透明背景:

    .map((index) => Container(
      key: ValueKey(index),
      decoration: BoxDecoration(
        color: Colors.transparent,
      ),
      child: Container(
        alignment: Alignment.center,
        width: double.infinity,
        decoration: BoxDecoration(
          gradient: const LinearGradient(
            colors: [
              Color(0xFF4D4D64),
              Color(0xFF363649)
            ],
            stops: [0, 1],
            begin: AlignmentDirectional(1, -1),
            end: AlignmentDirectional(-1, 1),
          ),
          borderRadius: BorderRadius.circular(30),
        ),
        child: InkWell(
          onTap: () {
            String path = '/$index';
            Get.toNamed(path);
          },
          child: Column(..),
        ),
      ),
    ))

我也试着在墨水井里往上走:

    .map((index) => Container(
      key: ValueKey(index),
      decoration: BoxDecoration(
        color: Colors.transparent,
      ),
      child: InkWell(
        onTap: () {
          String path = '/$index';
          Get.toNamed(path);
        },
        child: Container(
          alignment: Alignment.center,
          width: double.infinity,
          decoration: BoxDecoration(
            gradient: const LinearGradient(
              colors: [
                Color(0xFF4D4D64),
                Color(0xFF363649)
              ],
              stops: [0, 1],
              begin: AlignmentDirectional(1, -1),
              end: AlignmentDirectional(-1, 1),
            ),
            borderRadius: BorderRadius.circular(30),
          ),
          child: Column(...),
        ),
      ),
    ))

最后,我try 将这个透明容器在SafeArea中向上移动

  return Scaffold(
    backgroundColor: const Color(0xFF2f2e3c),
    appBar: AppBar(
      backgroundColor: const Color(0xFF2f2e3c),
      elevation: 0,
      title: Text(
        'Q.bit',
        style: GoogleFonts.outfit(
          textStyle: const TextStyle(
            color: Colors.white,
            fontSize: 25.0,
          ),
        ),
      ),
      centerTitle: true,
    ),
    body: Container(
      decoration: BoxDecoration(
        color: Colors.transparent,
      ),
      child: SafeArea(...),

我总是在容器 colored颜色 上遇到同样的问题.
有人能帮我吗?
提前谢谢你

推荐答案

你应该用dragWidgetBuilder,试试这个:

ReorderableGridView.count(
        clipBehavior: Clip.antiAlias,
        padding: const EdgeInsets.all(16),
        crossAxisSpacing: 4,
        mainAxisSpacing: 4,
        crossAxisCount: 2,
        childAspectRatio: 1,
        dragStartBehavior: DragStartBehavior.down,
        dragWidgetBuilder: (index, child) {
          return Scaffold(
            backgroundColor: Colors.transparent,
            body: Container(
              clipBehavior: Clip.antiAlias,
              alignment: Alignment.center,
              width: double.infinity,
              decoration: BoxDecoration(
                gradient: const LinearGradient(
                  colors: [Color(0xFF4D4D64), Color(0xFF363649)],
                  stops: [0, 1],
                  begin: AlignmentDirectional(1, -1),
                  end: AlignmentDirectional(-1, 1),
                ),
                borderRadius: BorderRadius.circular(30),
              ),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [
                  // SvgPicture.asset(
                  //   'assets/icons/$index.svg',
                  //   color: Colors.red,
                  // ),
                  Text(homeButtons[index]),
                ],
              ),
            ),
          );
        },
        children: homeButtons
            .map((index) => Container(
                  clipBehavior: Clip.antiAlias,
                  key: ValueKey(index),
                  alignment: Alignment.center,
                  width: double.infinity,
                  decoration: BoxDecoration(
                    gradient: const LinearGradient(
                      colors: [Color(0xFF4D4D64), Color(0xFF363649)],
                      stops: [0, 1],
                      begin: AlignmentDirectional(1, -1),
                      end: AlignmentDirectional(-1, 1),
                    ),
                    borderRadius: BorderRadius.circular(30),
                  ),
                  child: InkWell(
                    focusColor: Colors.transparent,
                    splashColor: Colors.transparent,
                    onTap: () {
                      // String path = '/$index';
                      // Get.toNamed(path);
                    },
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: [
                        // SvgPicture.asset(
                        //   'assets/icons/$index.svg',
                        //   color: Colors.red,
                        // ),
                        Text(index),
                      ],
                    ),
                  ),
                ))
            .toList(),
        onReorder: (oldIndex, newIndex) async {
          String path = homeButtons.removeAt(oldIndex);
          homeButtons.insert(newIndex, path);
          // setState(() {
          //   box.remove(key);
          //   box.write(key, homeButtons);
          // });
        },
      )

enter image description here

Flutter相关问答推荐

使用ThemeProvider不在亮模式和暗模式之间切换

在Android Studio的新用户界面中未找到热重新加载

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

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

为什么在setState之后Ffltter Pageview重置为第0页

在背景图像上排列定位徽标

如何将请求字段正确添加到DART多部分请求

按一下按钮即可更新 fl_chart

如何在点击查看措辞下方添加句子?

如果其他Provider 的帐户已存在,如何阻止用户登录?

hooks_riverpod 有用途吗

Flutter应用无法上传到Microsoft Store

Flutter: pie_chart 插件动画滚动问题

Riverpod中stateNotiferProvider和notifierProvider的区别

无法使用 bloc 更新 ListView.builder 的特定时间

如何建立最近的文件列表?

如何从 Firebase `get()` 获取 `DocumentReference`

构建失败 - 无法解析 io.grpc:grpc-core:[1.28.0]. (是的,我已经升级到 mavenCentral())

如何在Flutter 中制作自定义微调器?

如何做到这一点,当我们在 textified 中输入 ab 然后将 applebanana 显示为一个单词?飘飘然