Виджет PhysicalModel
Виджет PhysicalModel имитирует поверхность над экраном.
Цвет поверхности задаёт color типа Color,
высоту тени - elevation.
Скругление передают в borderRadius типа BorderRadius.
Дочерний виджет обрезается по этой форме.
Синтаксис
PhysicalModel(
color: Color(0xFFFFFFFF),
elevation: 6,
borderRadius: BorderRadius.circular(12),
child: child,
)
Параметры
| Параметр | Описание |
|---|---|
color |
Цвет поверхности. Принимает Color.
|
elevation |
Высота тени в логических пикселях. |
child |
Дочерний виджет на этой поверхности. |
Пример
Давайте поднимем белую карточку:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: PhysicalModel(
color: Color(0xFFFFFFFF),
elevation: 8,
borderRadius: BorderRadius.circular(12),
child: Padding(
padding: EdgeInsets.all(16),
child: Text('abcde'),
),
),
),
),
));
}
На экране белая карточка со скруглением, тенью и строкой 'abcde'.
Пример
Давайте сделаем тень ниже:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: PhysicalModel(
color: Color(0xFFE3F2FD),
elevation: 2,
child: SizedBox(
width: 120,
height: 48,
child: Center(child: Text('12345')),
),
),
),
),
));
}
На экране голубой прямоугольник со слабой тенью и строка '12345'.
Смотрите также
-
виджет
ShaderMask,
градиентная маска поверх дочернего виджета -
виджет
ImageFiltered,
размыть или исказить дочерний виджет -
виджет
RepaintBoundary,
рисовать дочерний виджет отдельным слоем -
виджет
Transform,
сдвиг, поворот, масштаб