| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter/widgets.dart'; |
| |
| import 'theme.dart'; |
| |
| /// A one device pixel thick horizontal line, with padding on either |
| /// side. |
| /// |
| /// In the material design language, this represents a divider. |
| /// |
| /// Dividers can be used in lists, [Drawer]s, and elsewhere to separate content |
| /// vertically. To create a one-pixel divider between items in a list, consider |
| /// using [ListTile.divideTiles], which is optimized for this case. |
| /// |
| /// The box's total height is controlled by [height]. The appropriate padding is |
| /// automatically computed from the height. |
| /// |
| /// See also: |
| /// |
| /// * [PopupMenuDivider], which is the equivalent but for popup menus. |
| /// * [ListTile.divideTiles], another approach to dividing widgets in a list. |
| /// * <https://material.google.com/components/dividers.html> |
| class Divider extends StatelessWidget { |
| /// Creates a material design divider. |
| /// |
| /// The height must be positive. |
| const Divider({ |
| Key key, |
| this.height: 16.0, |
| this.indent: 0.0, |
| this.color |
| }) : assert(height >= 0.0), |
| super(key: key); |
| |
| /// The divider's vertical extent. |
| /// |
| /// The divider itself is always drawn as one device pixel thick horizontal |
| /// line that is centered within the height specified by this value. |
| /// |
| /// A divider with a height of 0.0 is always drawn as a line with a height of |
| /// exactly one device pixel, without any padding around it. |
| final double height; |
| |
| /// The amount of empty space to the left of the divider. |
| final double indent; |
| |
| /// The color to use when painting the line. |
| /// |
| /// Defaults to the current theme's divider color, given by |
| /// [ThemeData.dividerColor]. |
| /// |
| /// ```dart |
| /// new Divider( |
| /// color: Colors.deepOrange, |
| /// ), |
| /// ``` |
| final Color color; |
| |
| @override |
| Widget build(BuildContext context) { |
| return new SizedBox( |
| height: height, |
| child: new Center( |
| child: new Container( |
| height: 0.0, |
| margin: new EdgeInsetsDirectional.only(start: indent), |
| decoration: new BoxDecoration( |
| border: new Border( |
| bottom: new BorderSide( |
| color: color ?? Theme.of(context).dividerColor, |
| width: 0.0, |
| ), |
| ), |
| ), |
| ), |
| ), |
| ); |
| } |
| } |