颤动减少复选框与其标题之间的空间

say*_*bir 11 flutter flutter-layout

我以这种方式使用 CheckboxListTile:

\n
ListTileTheme(\n  contentPadding: EdgeInsets.only(right: 20.0),\n  child: CheckboxListTile(\n    controlAffinity: ListTileControlAffinity.leading,\n    value: false,\n    onChanged: (value) {},\n    title: Text(\n      "\xd8\xa7\xd9\x81\xd8\xb2\xd9\x88\xd8\xaf\xd9\x86 \xd8\xa8\xd9\x87 \xd9\x81\xd9\x87\xd8\xb1\xd8\xb3\xd8\xaa \xd9\xbe\xd8\xb1\xda\xa9\xd8\xa7\xd8\xb1\xd8\xa8\xd8\xb1\xd8\xaf\xd9\x87\xd8\xa7"\n    ),\n  ),\n),\n
Run Code Online (Sandbox Code Playgroud)\n

其结果是:

\n

在此输入图像描述

\n

如何减少复选框与其标题之间的间距?

\n

小智 29

使用 Transform.translate

Transform.translate(
                          offset: const Offset(-20, 0),
                         child: childWidget(),
)
Run Code Online (Sandbox Code Playgroud)

完整示例

Padding(
                      padding: const EdgeInsets.symmetric(horizontal: 8.0),
                      child: CheckboxListTile(
                        value: isChecked,
                        controlAffinity: ListTileControlAffinity.leading,
                        contentPadding: EdgeInsets.zero,
                        title: Transform.translate(
                          offset: const Offset(-20, 0),
                          child: RichText(
                            text: TextSpan(
                              text: S.of(context).iAgreeWith,
                              style: TextStyle(
                                  color: Theme.of(context).hintColor,
                                  fontWeight: FontWeight.w400),
                              children: <TextSpan>[
                                TextSpan(
                                  text: S.of(context).terms,
                                  style: TextStyle(
                                      decoration: TextDecoration.underline,
                                      color: Theme.of(context).hintColor,
                                      fontWeight: FontWeight.w400),
                                  recognizer: TapGestureRecognizer()
                                    ..onTap = () {
                                      // Single tapped.

                                      Navigator.push(
                                          context,
                                          MaterialPageRoute(
                                            builder: (context) => WebView(
                                              url:
                                                  ksportsCornerWebsitePolicyUrl,
                                              title: S.of(context).termsCap,
                                            ),
                                          ));
                                    },
                                ),
                                TextSpan(
                                    text: " " + S.of(context).and + " ",
                                    style: TextStyle(
                                        color: Theme.of(context).hintColor,
                                        fontWeight: FontWeight.w400)),
                                TextSpan(
                                  text: S.of(context).privacyPolicy,
                                  style: TextStyle(
                                      decoration: TextDecoration.underline,
                                      color: Theme.of(context).hintColor,
                                      //fontSize: 14.0.sp,
                                      fontWeight: FontWeight.w400),
                                  recognizer: TapGestureRecognizer()
                                    ..onTap = () {
                                      // Single tapped.

                                      Navigator.push(
                                          context,
                                          MaterialPageRoute(
                                            builder: (context) => WebView(
                                              url:
                                                  ksportsCornerWebsitePolicyUrl,
                                              title: S
                                                  .of(context)
                                                  .privacyPolicyCaps,
                                            ),
                                          ));
                                    },
                                ),
                              ],
                            ),
                          ),
                        ),
                        activeColor: Theme.of(context).hintColor,
                        checkColor: Theme.of(context).cursorColor,
                        onChanged: (value) {
                          isChecked = !isChecked;
                          setState(() {});
                        },
                      ),
                    ),
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Alo*_*lok 10

在CheckBoxListTile,可能很难实现你想要的。然而,总有一个解决方法,那就是使用Row(). 另外,我们将使用它FlatButton()来获得相同的效果。

\n

这里的问题是,在 中FlatButton(),你只需要做与onChanged在 中相同的事情Checkbox()

\n

解决方案

\n
     bool _myBool = false;\n\n     Container(\n        child: FlatButton(\n          // here toggle the bool value so that when you click \n          // on the whole item, it will reflect changes in Checkbox\n          onPressed: () => setState(() => _myBool = !_myBool),\n          child: Row(\n            mainAxisAlignment: MainAxisAlignment.start,\n            children: [\n              SizedBox(\n                height: 24.0,\n                width: 24.0,\n                child: Checkbox(\n                  value: _myBool,\n                  onChanged: (value){\n                     setState(() => _myBool = value);\n                  }\n                )\n              ),\n              // You can play with the width to adjust your\n              // desired spacing\n              SizedBox(width: 10.0),\n              Text("\xd8\xa7\xd9\x81\xd8\xb2\xd9\x88\xd8\xaf\xd9\x86 \xd8\xa8\xd9\x87 \xd9\x81\xd9\x87\xd8\xb1\xd8\xb3\xd8\xaa \xd9\xbe\xd8\xb1\xda\xa9\xd8\xa7\xd8\xb1\xd8\xa8\xd8\xb1\xd8\xaf\xd9\x87\xd8\xa7")\n            ]\n          )\n        )\n      )\n
Run Code Online (Sandbox Code Playgroud)\n

结果

\n

结果图像

\n

如果您希望Checkbox()位于右侧,只需交换Text()和 的位置即可Checkbox()。休息将保持不变。

\n


SUD*_*ARA 9

添加horizontalTitleGap: 0,到 ListTileTheme。

\n
ListTileTheme(\n  horizontalTitleGap: 0,\n  child: CheckboxListTile(\n    controlAffinity: ListTileControlAffinity.leading,\n    value: false,\n    onChanged: (value) {},\n    title: Text(\n      "\xd8\xa7\xd9\x81\xd8\xb2\xd9\x88\xd8\xaf\xd9\x86 \xd8\xa8\xd9\x87 \xd9\x81\xd9\x87\xd8\xb1\xd8\xb3\xd8\xaa \xd9\xbe\xd8\xb1\xda\xa9\xd8\xa7\xd8\xb1\xd8\xa8\xd8\xb1\xd8\xaf\xd9\x87\xd8\xa7"\n    ),\n  ),\n),\n
Run Code Online (Sandbox Code Playgroud)\n

前 :

\n

\n

后:

\n

\n