您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
114 行
4.1 KiB
114 行
4.1 KiB
using System.Collections.Generic;
|
|
using uiwidgets;
|
|
using Unity.UIWidgets.foundation;
|
|
using Unity.UIWidgets.painting;
|
|
using Unity.UIWidgets.rendering;
|
|
using Unity.UIWidgets.ui;
|
|
using Unity.UIWidgets.widgets;
|
|
|
|
namespace Unity.UIWidgets.material {
|
|
public class GridTileBar : StatelessWidget {
|
|
public GridTileBar(
|
|
Key key = null,
|
|
Color backgroundColor = null,
|
|
Widget leading = null,
|
|
Widget title = null,
|
|
Widget subtitle = null,
|
|
Widget trailing = null
|
|
) : base(key: key) {
|
|
this.backgroundColor = backgroundColor;
|
|
this.leading = leading;
|
|
this.title = title;
|
|
this.subtitle = subtitle;
|
|
this.trailing = trailing;
|
|
}
|
|
|
|
public readonly Color backgroundColor;
|
|
|
|
public readonly Widget leading;
|
|
|
|
public readonly Widget title;
|
|
|
|
public readonly Widget subtitle;
|
|
|
|
public readonly Widget trailing;
|
|
|
|
public override Widget build(BuildContext context) {
|
|
BoxDecoration decoration = null;
|
|
if (backgroundColor != null)
|
|
decoration = new BoxDecoration(color: backgroundColor);
|
|
|
|
EdgeInsetsDirectional padding = EdgeInsetsDirectional.only(
|
|
start: leading != null ? 8.0f : 16.0f,
|
|
end: trailing != null ? 8.0f : 16.0f
|
|
);
|
|
|
|
ThemeData theme = Theme.of(context);
|
|
ThemeData darkTheme = new ThemeData(
|
|
brightness: Brightness.dark,
|
|
accentColor: theme.accentColor,
|
|
accentColorBrightness: theme.accentColorBrightness
|
|
);
|
|
var expandChildren = new List<widgets.Widget>();
|
|
|
|
if (leading != null) {
|
|
expandChildren.Add(new Padding(
|
|
padding: EdgeInsetsDirectional.only(end: 8.0f), child: leading));
|
|
}
|
|
|
|
if (title != null && subtitle != null) {
|
|
expandChildren.Add(new Expanded(
|
|
child: new Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: new List<Widget> {
|
|
new DefaultTextStyle(
|
|
style: darkTheme.textTheme.subtitle1,
|
|
softWrap: false,
|
|
overflow: TextOverflow.ellipsis,
|
|
child: title
|
|
),
|
|
new DefaultTextStyle(
|
|
style: darkTheme.textTheme.caption,
|
|
softWrap: false,
|
|
overflow: TextOverflow.ellipsis,
|
|
child: subtitle
|
|
)
|
|
}
|
|
)
|
|
));
|
|
}
|
|
else if (title != null || subtitle != null)
|
|
expandChildren.Add(new Expanded(
|
|
child: new DefaultTextStyle(
|
|
style: darkTheme.textTheme.subtitle1,
|
|
softWrap: false,
|
|
overflow: TextOverflow.ellipsis,
|
|
child: title ?? subtitle
|
|
)
|
|
));
|
|
|
|
if (trailing != null) {
|
|
expandChildren.Add(new Padding(
|
|
padding: EdgeInsetsDirectional.only(start: 8.0f),
|
|
child: trailing));
|
|
}
|
|
|
|
return new Container(
|
|
padding: padding,
|
|
decoration: decoration,
|
|
height: (title != null && subtitle != null) ? 68.0f : 48.0f,
|
|
child: new Theme(
|
|
data: darkTheme,
|
|
child: IconTheme.merge(
|
|
data: new IconThemeData(color: Colors.white),
|
|
child: new Row(
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
children: expandChildren
|
|
)
|
|
)
|
|
)
|
|
);
|
|
}
|
|
}
|
|
}
|