Приложение Flutter LinearGradient Widget не работает гладко

avatar
Vinay Shankar Dubey
9 августа 2021 в 06:46
131
2
0

Дев.. У меня возникает проблема в моем приложении Flutter. Когда я использую виджет LinerGradient в своем приложении на виджете-контейнере.. Мой LinearGradient не идет гладко... Пожалуйста, помогите..

 import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class NowPlayingScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    //Variables
    final mySize = MediaQuery.of(context).size;
    return Scaffold(
      body: Stack(
         children: [
           //Todo : First Container Background
           Container(
             height: mySize.height,
             width: mySize.width,
             color: Color(0xFF9D9D9D),
           ),
           Container(
             height: mySize.height,
             width: mySize.width,
             decoration: BoxDecoration(
               gradient: LinearGradient(
                 begin: Alignment.bottomRight,
                 end: Alignment.topLeft,
                 colors:[
                   Colors.black,
                   Colors.transparent
                 ],
               )
             ),
           ),
         ],
      ),
    );
  }
}

введите описание изображения здесь

Источник
cas
9 августа 2021 в 07:18
1

выглядит совершенно гладко для меня, вы уверены, что это не просто ограничение на экране, который вы используете?

Anas Nadeem
9 августа 2021 в 10:01
0

Попробуйте на реальном устройстве, а не в эмуляторе

Ответы (2)

avatar
Adam Linscott
9 августа 2021 в 09:00
0

В вашем коде все в порядке, вы просто видите полосы, вызванные градиентом, покрывающим весь экран.

Если вы создадите градиент из белого (#FFFFFFFF) и черного (#FF000000), вы сможете увидеть ровно 256 оттенков. Если у вас большой дисплей, каждая полоса будет состоять из нескольких пикселей, и (в зависимости от вашего зрения) вы сможете увидеть эти полосы. Вы можете поэкспериментировать с этим, изменив цвет нижнего контейнера. Использование темно-зеленого (#FF003300) сделает полосы более заметными, а использование ярко-красного (#FFFF0000) сделает их более трудными для просмотра.

Лучший способ исправить это — уменьшить размер контейнера градиента или увеличить диапазон градиента. Это приведет к тому, что каждая полоса будет занимать меньше пикселей и сделает их менее заметными.

avatar
Rex
9 августа 2021 в 08:45
0

На мой взгляд, это выглядит идеально, но если вы хотите изменить размер градиента определенного цвета, добавьте свойство «stops» для линейного градиента

например:

Container(
             height: mySize.height,
             width: mySize.width,
             decoration: BoxDecoration(
               gradient: LinearGradient(
                 begin: Alignment.bottomRight,
                 end: Alignment.topLeft,
                 colors:[
                   Colors.black,
                   Colors.transparent
                 ],
                stops:[0.5,0.2],
               )
             ),
           ),

Для получения дополнительной информации: https://api.flutter.dev/flutter/painting/LinearGradient-class.html