ant-design tree 设置默认选中状态_flutter主题设置

App主题色控制

  • Theme有两种: 全局Theme和局部Theme。 全局Theme是由应用程序根MaterialApp创建的Theme 。
  • Theme作用: 可以设置Widget的主题,提高开发效率和速度,保持App主题统一性或某种一致性。

Theme

Theme组件可以为material APP定义主题数据(ThemeData)。Material组件库里很多组件都使用了主题数据, 如导航栏颜色、标题字体、Icon样式等。Theme内会使用InheritedWidget来为其子树共享样式数据。

设置主题栗子

全局:

/// 全局主题在MaterialApp的theme属性
/// 全局生效
new MaterialApp(
  title: 'demo',
  theme: new ThemeData( // 这里就是参数
    brightness: Brightness.dark,
    primaryColor: Colors.lightBlue[800],
    accentColor: Colors.cyan[600],
  ),
);

局部:

/// 假如我们要给FloatingActionButton设置主题样式
/// 直接写个Theme包裹FloatingActionButton组件
/// 然后设置data,接收类型依然是ThemeData,里面填写我们的参数
/// (如果没有设置局部主题则默认使用全局主题)
new Theme(
  data: new ThemeData(
    accentColor: Colors.yellow,
  ),
  child: new FloatingActionButton(
    onPressed: () {},
    child: new Icon(Icons.add),
  ),
);

扩展父主题:

/// 扩展父主题时无需覆盖所有的主题属性,可以通过使用copyWith方法来实现
new Theme(
  data: Theme.of(context).copyWith(accentColor: Colors.yellow),
  child: new FloatingActionButton(
    onPressed: null,
    child: new Icon(Icons.add),
  ),
);

Theme.of(context)将查找Widget树并返回树中最近的Theme。如果Widget之上有一个单独的Theme定义, 则返回该值。如果不是,则返回App主题。

判断平台显示指定主题:

/// defaultTargetPlatform在foundation包里。
/// 
/// 我们也可以使用io包里的Platform来进行判断。
/// 那么判断就是
/// theme: Platform.isIOS ? iOSTheme : AndroidTheme,
new MaterialApp(
  theme: defaultTargetPlatform == TargetPlatform.iOS
      ? iOSTheme
      : AndroidTheme,
  title: 'Flutter Theme',
  home: new MyHomePage(),
);

Tips:

Flutter的Color中大多数颜色从100到900,增量为100,加上颜色50,数字越小颜色越浅, 数字越大颜色越深。强调色调只有100、200、400和700。

栗子:

你可能感兴趣的:(ant-design,tree,设置默认选中状态,flutter,局部状态和全局状态区别,flutter,进度条,flutter,选中状态,flutter进度条,material,theme,ui,设置)