如何更改默认的ListTileTheme

时间:2020-10-03 10:58:39

标签: flutter

我对默认的ListTile外观不满意,并希望为其设置主题。具体来说,我对字幕文本的颜色不满意-它是浅灰色,并且与背景表面的对比度不足以使其易于辨认。

我已经有创建自定义ThemeData的代码,但是我看不到任何文档说明如何自定义它以影响ListTiles。

此文件记录在某处吗?

3 个答案:

答案 0 :(得分:1)

不幸的是,无法指定全局ListTileTheme。相反,您可以使用ListTileTheme为它下面的所有内容提供主题,因为它是InheritedWidget。为此,只需用ListTileTheme包装您的子窗口小部件即可。此外,它具有构造函数merge,该构造函数将尝试在当前列表之上查找ListTileTheme,如果找到任何列表,则将您的样式与父样式合并。

例如

ListTileTheme(
        //properties you want to add
        child: /// your child widget that has ListTile's anywhere in the tree
      ),

ListTileTheme.merge(
        //properties you want to merge with any parent ListTileTheme, if there's any
        child: /// your child widget that has ListTile's anywhere in the tree
      ),

如果有什么事情,您可以按照this issue跟踪全局ListTileTheme的实施进度

答案 1 :(得分:0)

body: Center(
      child: ListTile(
          leading: const Icon(Icons.flight_land),
          title: const Text("Trix's airplane"),
          subtitle: const Text(
            'The airplane is only in Act II.',
            style: TextStyle(color: Colors.amber),
          ),
          enabled: true,
          onTap: () {/* react to the tile being tapped */}),
    ),

如果您要查找列表对象的字幕颜色,请参考上面的代码作为参考。只需设置样式即可。

答案 2 :(得分:0)

我不得不在flutter项目中自定义列表磁贴。 这是我所做的: 我将弹丸包装在Ink小部件中,并指定了color:属性为其赋予背景色。 title:subtitle:带有Text()个可设置样式的小部件,其颜色可以通过使用style: TextStyle(color: Colors.red)来更改。 leading:trailing:大多包含也具有color:属性的图标。