MaterialStateBorderSide typedef
- @Deprecated('Use WidgetStateBorderSide instead. ' 'Moved to the Widgets layer to make code available outside of Material. ' 'This feature was deprecated after v3.19.0-0.3.pre.')
Defines a BorderSide whose value depends on a set of MaterialStates which represent the interactive state of a component.
To use a MaterialStateBorderSide, you should create a subclass of a
MaterialStateBorderSide and override the abstract resolve method.
This class enables existing widget implementations with BorderSide
properties to be extended to also effectively support MaterialStateProperty<BorderSide>
property values. MaterialStateBorderSide should only be used with widgets that document
their support, like ActionChip.side.
This example defines a subclass of MaterialStateBorderSide, that resolves to a red border side when its widget is selected.
To see it in action, copy and run this code snippet on DartPad.
import 'package:material_ui/material_ui.dart';
/// Flutter code sample for [WidgetStateBorderSide].
void main() => runApp(const MaterialStateBorderSideExampleApp());
class MaterialStateBorderSideExampleApp extends StatelessWidget {
const MaterialStateBorderSideExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('MaterialStateBorderSide Sample')),
body: const Center(child: MaterialStateBorderSideExample()),
),
);
}
}
class MaterialStateBorderSideExample extends StatefulWidget {
const MaterialStateBorderSideExample({super.key});
@override
State<MaterialStateBorderSideExample> createState() =>
_MaterialStateBorderSideExampleState();
}
class _MaterialStateBorderSideExampleState
extends State<MaterialStateBorderSideExample> {
bool isSelected = true;
@override
Widget build(BuildContext context) {
return FilterChip(
label: const Text('Select chip'),
selected: isSelected,
onSelected: (bool value) {
setState(() {
isSelected = value;
});
},
side: WidgetStateBorderSide.resolveWith((Set<WidgetState> states) {
if (states.contains(WidgetState.selected)) {
return const BorderSide(color: Colors.red);
}
return null; // Defer to default value on the theme or widget.
}),
);
}
}
This class should only be used for parameters which are documented to take MaterialStateBorderSide, otherwise only the default state will be used.
See also:
- WidgetStateBorderSide, the non-Material version that can be used
interchangeably with
MaterialStateBorderSide.
Implementation
// TODO(framework): Replace the following block with a @dartpad directive
// when it's supported. https://github.com/dart-lang/dartdoc/issues/4123
/// {@macro material_ui.dartpad_guide}
///
/// {@example /example/lib/material_state/material_state_border_side.0.dart#body}
///
/// </callout-box>
///
/// This class should only be used for parameters which are documented to take
/// [MaterialStateBorderSide], otherwise only the default state will be used.
///
/// See also:
///
/// * [WidgetStateBorderSide], the non-Material version that can be used
/// interchangeably with `MaterialStateBorderSide`.
@Deprecated(
'Use WidgetStateBorderSide instead. '
'Moved to the Widgets layer to make code available outside of Material. '
'This feature was deprecated after v3.19.0-0.3.pre.',
)
typedef MaterialStateBorderSide = WidgetStateBorderSide;