Самый элегантный / эффективный способ рефакторинга виджетов в Flutter и Dart - PullRequest
0 голосов
/ 18 апреля 2020

Поиск в Интернете «как провести рефакторинг виджетов Flutter» Я обнаружил, что существует два возможных способа, которые оба работают в соответствии с моим тестированием, но все же сильно отличаются от структурной точки зрения. Второй метод, действительно, включает в себя и дополнительную инструкцию по сборке, которая должна нести дополнительную нагрузку на производительность приложения, верно?

Это код, который я хочу реорганизовать:

Container(
    child: Column(
        children: <Widget> [
            [long code to create a button with many properties],
            [long code to create a button with many properties],
            [long code to create a button with many properties],
            [long code to create a button with many properties],
        ],),);

Это Основные пути, которые я нашел:

1):

Widget MyButton(Color color, String text) {
    return [long code to create a button with many properties];
}

2):

class MyButton extends StatelessWidget {
    MyButton(this.color, this.text);

    final Color color;
    final String text;

    @override
    Widget build(BuildContext context) {
        return [long code to create a button with many properties];
    }
}

Какой метод лучше?

1 Ответ

0 голосов
/ 18 апреля 2020

Пожалуйста, посмотрите и рассмотрите этот другой вопрос:

В чем разница между функциями и классами для создания многократно используемых виджетов?

Краткий ответ : лучше второй метод (эффективный и элегантный).


В первом методе (извлечение из функции) вы просто создаете функцию, которая возвращает инкапсулированный виджет.

Во втором методе (извлечение в класс) вы извлекаете виджет в новый класс, который расширяется от StatelessWidget. Это различие дает платформе Flutter способ оптимизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...