The PhysicalModel widget in Flutter is used to create a physical model representation of a material object. It can simulate effects like elevation, shape, and surface properties, such as shadows and clipping. This widget is particularly useful when you want to add a realistic, material-like appearance to your UI components.
Here are the main attributes of the PhysicalModel widget:
child:
Type: Widget
Required: Yes
The child attribute is mandatory and represents the widget that you want to apply the physical model effects to.
shape:
Type: BoxShape
Default Value: BoxShape.rectangle
Specifies the shape of the physical model. It can be either BoxShape.rectangle or BoxShape.circle.
elevation:
Type: double
Default Value: 0.0
The elevation attribute defines the z-coordinate at which the physical model is placed. It determines the shadow and lighting effects, providing a sense of depth.
color:
Type: Color
Default Value: Colors.transparent
Sets the base color of the physical model.
shadowColor:
Type: Color
Default Value: Colors.black
Specifies the color of the shadow cast by the physical model.
Example of PhysicalModel Widget:
Let's consider an example to demonstrate the usage of the PhysicalModel widget. In this example, we'll create a raised button with a physical model effect.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('PhysicalModel Example'),
),
body: Center(
child: PhysicalModel(
color: Colors.blue,
elevation: 6.0,
shape: BoxShape.rectangle,
shadowColor: Colors.black,
child: Container(
width: 150,
height: 50,
child: Center(
child: Text(
'Raised Button',
style: TextStyle(color: Colors.white),
),
),
),
),
),
),
);
}
}
In this example:
The PhysicalModel widget wraps a Container containing a text label for the button.
The color attribute sets the base color of the physical model.
The elevation attribute provides a raised appearance by specifying the z-coordinate of the model.
The shape attribute is set to BoxShape.rectangle, indicating that the physical model should have a rectangular shape.
The shadowColor attribute determines the color of the shadow cast by the physical model.