当 ElevatedButton 文本样式的子样式是 flutterhttps://stackoverflow.com/questions/ask 中的 ListTile 时,如何使用

How to use ElevatedButton text style when its child is a ListTile in flutterhttps://stackoverflow.com/questions/ask

提问人:Stéphane de Luca 提问时间:11/1/2023 更新时间:11/2/2023 访问量:35

问:

出于设计目的,我需要一个与背景颜色相同的可点击对象,并且由于用户可以从应用程序中选择自己的主题,因此我需要标题和副标题颜色与按钮的文本相同,以便每个主题的对比度都可以(我的意思是当主题是黑暗时, 文本将是轻盈的,反之亦然)。ListTileElevatedButton

因此,我最终得到了如下代码:

return ElevatedButton(
                  style: ButtonStyle(
                    shape: MaterialStateProperty.all<RoundedRectangleBorder>(
                      RoundedRectangleBorder(
                        //side: BorderSide(width: 2),
                        borderRadius: BorderRadius.circular(20),
                      ),
                    ),
                  ),
                  onPressed: () => Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) => screen(t),
                      )),
                  child: Padding(
                    padding: const EdgeInsets.symmetric(vertical: 4),
                    child: ListTile(
                      contentPadding: const EdgeInsets.all(0),
                      //tileColor: Colors.green,
                      // shape: RoundedRectangleBorder(
                      //   //side: BorderSide(width: 2),
                      //   borderRadius: BorderRadius.circular(20),
                      // ),
                      leading: CircleAvatar(
                        child: Icon(t.iconData),
                      ),
                      title: Text(t.toString().i18n),
                      subtitle: Text(t.description),
                      trailing: const Icon(Icons.arrow_forward_ios),
                      // onTap: () => Navigator.push(
                      //   context,
                      //   MaterialPageRoute(
                      //     builder: (context) => screen(t),
                      //   ),
                    ),
                  ),
                );

但是即使在深色背景上,文本也会保持黑暗,这就是为什么我想利用 EelevatedButton Theme.of(context) 来呈现标题和副标题文本。

怎么做呢?

Flutter 主题 listtile

评论

0赞 Rahul Kushwaha 11/1/2023
您可以使用容器代替提升按钮。

答:

0赞 Robert S 11/2/2023 #1

我希望下面的例子对你有所帮助

                Padding(
                    padding: const EdgeInsets.fromLTRB(5, 20, 5, 5),
                    child: SizedBox(
                      height: 60.0,
                      child: ElevatedButton(
                        style: ElevatedButton.styleFrom(
                          primary: Color(0xffff8080),
                          shape: RoundedRectangleBorder(
                            borderRadius: BorderRadius.circular(10),
                          ),
                          elevation: 05.0,
                        ),
                        onPressed: () async {
                          
                        },
                        child: Ink(
                          child: Container(
                            constraints: const BoxConstraints(
                                maxWidth: 200.0, minHeight: 60.0),
                            alignment: Alignment.center,
                            child: Text(
                              "Send OTP ",
                              textAlign: TextAlign.center,
                              style: Styles.googleFontWhite,
                            ),
                          ),
                        ),
                      ),
                    ),
                  ),