Flutter进阶—自定义主题风格
质感设计的 class _MyHomePageState extends State<MyHomePage> {
Widget _colorDisplayBox(String explanation,String name,Color color) {
return new Column( children: <Widget>[ new Row( children: <Widget>[ new Text("$explanationn$namett"),new Flexible( child: new Container( height: 30.0,decoration: new BoxDecoration(color: color))) ],),new Divider() ],);}
@override Widget build(BuildContext context) {
return new Scaffold( //... body: new Center( child: new ListView( padding: new EdgeInsets.all(8.0),children: <Widget>[ _colorDisplayBox("突出颜色","highlightColor",Theme.of(context).highlightColor),_colorDisplayBox("提示颜色","hintColor",Theme.of(context).hintColor),_colorDisplayBox("文本选择手柄颜色","textSelectionHandleColor",Theme.of(context).textSelectionHandleColor),_colorDisplayBox("文字选择颜色","textSelectionColor",Theme.of(context).textSelectionColor),_colorDisplayBox("背景颜色","backgroundColor",Theme.of(context).backgroundColor),_colorDisplayBox("强调颜色","accentColor",Theme.of(context).accentColor),_colorDisplayBox("画布颜色","canvasColor",Theme.of(context).canvasColor),_colorDisplayBox("卡片颜色","cardColor",Theme.of(context).cardColor),_colorDisplayBox("按钮颜色","buttonColor",Theme.of(context).buttonColor),_colorDisplayBox("对话框背景颜色","dialogBackgroundColor",Theme.of(context).dialogBackgroundColor),_colorDisplayBox("禁用颜色","disabledColor",Theme.of(context).disabledColor),_colorDisplayBox("分频器颜色","dividerColor",Theme.of(context).dividerColor),_colorDisplayBox("错误颜色","errorColor",Theme.of(context).errorColor),_colorDisplayBox("指示灯颜色","indicatorColor",Theme.of(context).indicatorColor),_colorDisplayBox("原色","primaryColor",Theme.of(context).primaryColor),_colorDisplayBox("脚手架背景颜色","scaffoldBackgroundColor",Theme.of(context).scaffoldBackgroundColor),_colorDisplayBox("次标头颜色","secondaryHeaderColor",Theme.of(context).secondaryHeaderColor),_colorDisplayBox("选择行颜色","selectedRowColor",Theme.of(context).selectedRowColor),_colorDisplayBox("飞溅颜色","splashColor",Theme.of(context).splashColor),_colorDisplayBox("未选择的控件颜色","unselectedWidgetColor",Theme.of(context).unselectedWidgetColor),],);}}
我们可以自定义配色,比如设置 需要注意这里的亮度是描述颜色的对比度需求,有两个常量。 class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
theme: new ThemeData(
primaryColor: Colors.red,primaryColorBrightness: Brightness.dark,),title: 'Flutter Demo',home: new MyHomePage(),);
}
}
我们还可以根据不同平台设置主题,比如我们在iOS上设置白色和灰色主题,在Android上设置紫色和橙色主题。判断平台类型需要使用 import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
void main() {
runApp(new MyApp());
}
final ThemeData kIOSTheme = new ThemeData(
primarySwatch: Colors.orange,primaryColor: Colors.grey[100],primaryColorBrightness: Brightness.light,);
final ThemeData kDefaultTheme = new ThemeData(
primarySwatch: Colors.purple,accentColor: Colors.orangeAccent[400],);
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
theme: defaultTargetPlatform == TargetPlatform.iOS
? kIOSTheme
: kDefaultTheme,);
}
}
在上面的代码中,有一段大家可能有疑问: 大多数色板的颜色从100到900,增量为100,加上颜色50。数字越小,颜色越浅,数字越大,颜色越暗。强调色调(例如redAccent)只有数值100、200、400和700。 此外,还有一系列具有普遍不透明度的黑色和白色。例如,black54是具有54%不透明度的纯黑色。 要从其中一个色板中选择特定颜色,需要使用所需特定颜色的整数索引到样本。每个颜色样本常量是一种颜色,可以直接使用。 Color selection = Colors.green[400];
new Container(
color: Colors.blue,)
关于更多调色板,可以访问Flutter API的相关文档进一步了解。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |