развевается только нижняя тень на контейнер

Я пробовал много решений, но не мог получить то, что хочу.

/questions/49522862/dobavlenie-teni-vnizu-tsvetnogo-kontejnera-v-flattere/49522876#49522876 Я применил этот ответ, но не смог получить правильный ответ. У контейнера все еще есть тень. Как я могу этого добиться?

а также я попытался окружить свой виджет Material. но все еще не могу решить проблему.

 Material(
        elevation: 5,
        child: Container(
          height: 50,
          child: _buildEloAndLevel(),

        ),
      ),

3 ответа

Решение
Material(
  elevation: 5,
  child: Container(
    height: 50,
    child: _buildEloAndLevel(),

    // add boxShadow
    decoration: BoxDecoration(
      boxShadow: [
        color: Colors.black54,
        blurRadius: 15.0,
      ],
    ),
  ),
),

Это создаст shadow из 15 units вокруг Container. Теперь тень можно перемещать с помощьюoffsetсвойство. Поскольку нам не нужна тень сверху, мы можем переместить ее вниз на15 units.

Material(
  elevation: 5,
  child: Container(
    height: 50,
    child: _buildEloAndLevel(),

    // add boxShadow
    decoration: BoxDecoration(
      boxShadow: [
        color: Colors.black54,
        blurRadius: 15.0,
        offset: Offset(0, 15), // horizontally move 0, vertically move 15,
      ],
    ),
  ),
),

Я не знаю, действительно ли другие примеры устанавливают тень только для низа, но вот известное решение:

      Container(
          height: 50.0,
          decoration: BoxDecoration(
              boxShadow: <BoxShadow>[
                BoxShadow(
                  color: Colors.black54,
                  blurRadius: 20.0,
                  spreadRadius: -20.0,
                  offset: Offset(0.0, 25.0),
                )
              ],
            color: Colors.red,
          ),
        ),

Установите размытие тени с помощью, а затем установите spreadRadius отрицать blurRadius затем используйте dy собственность Offset() конструктор, вы устанавливаете его в положительные значения, чтобы контролировать нижнюю часть тени.

Все, что вам нужно сделать, это поиграть со значением смещения. И я думаю, вам не нужно оборачивать этоMaterial.

Смещение - это смещение тени от рамки. Требуется 2 значения типа double,Offset(x, y);

Пример:

Container(
          height: 50.0,
          decoration: BoxDecoration(
              boxShadow: <BoxShadow>[
                BoxShadow(
                  color: Colors.black54,
                  offset: Offset(15.0, 20.0),
                  blurRadius: 20.0,
                )
              ],
            color: Colors.red,
          ),
        ),

СОВЕТЫ ОТ МЕНЯ: Чтобы убедиться, что тень не отображается в верхней части вашего контейнера, убедитесь, что ваш радиус размытия не превышает y-значение вашего смещения.

Другие вопросы по тегам