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

class Loading extends StatelessWidget {
  const Loading({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Material(
      child: Center(
        child: CircularProgressIndicator(),
      ),
    );
  }
}

Я использую IntelliJ в версии 2021.2.1 , и я получал это предупреждение в разное время при создании кода во флаттере:

enter image description here

Чтобы решить эту проблему с ворсом, вы можете просто добавить зарезервированное слово const после оператора возврата, оставив код следующим образом:

class Loading extends StatelessWidget {
  const Loading({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const Material(
      child: Center(
        child: CircularProgressIndicator(),
      ),
    );
  }
}

Как это действительно переходит на трепетание? Это существенное изменение? Если не очень важно, есть ли способ отключить эти предупреждения в IntelliJ? Потому что я считаю их довольно скучными.

0
Pierre Vieira 14 Сен 2021 в 16:52

2 ответа

Лучший ответ

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

1
Tim Jacobs 14 Сен 2021 в 14:06

Посмотрим, может ли этот пост помочь вам прояснить ситуацию:
https://stackoverflow.com/a/59114186/13658281
Конструкторы const внутри сборки, например const Text ('статический текст'), не заставят этот текст перестраиваться.

1
lbarqueira 14 Сен 2021 в 14:05