Как лучше хранить все постоянные во Флаттере? - PullRequest
0 голосов
/ 07 января 2019

Какая лучшая практика программирования для

создать постоянный класс в Flutter

чтобы сохранить все константы приложения для удобства использования. Я знаю, что в Dart есть ключевое слово const для создания константных полей, но можно ли использовать static вместе с const, или это создаст проблемы с памятью во время выполнения.

class Constants {
static const String SUCCESS_MESSAGE=" You will be contacted by us very soon.";
}

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Хотя с static const нет технических проблем, архитектурно вы можете захотеть сделать это по-другому.

Флаттер имеет тенденцию , а не иметь какие-либо глобальные / статические переменные и использовать InheritedWidget.

Что означает, что вы можете написать:

class MyConstants extends InheritedWidget {
  static MyConstants of(BuildContext context) => context.inheritFromWidgetOfExactType(MyConstants);

  const MyConstants({Widget child, Key key}): super(key: key, child: child);

  final String successMessage = 'Some message';

  @override
  bool updateShouldNotify() => false;
}

Затем вставляется в корень вашего приложения:

void main() {
  runApp(
    MyConstants(
      child: MyApp(),
    ),
  );
}

И используется как таковой:

@override
Widget build(BuilContext context) {
  return Text(MyConstants.of(context).successMessage);
}

В нем немного больше кода, чем в static const, но есть много преимуществ:

  • Работает с горячей перезагрузкой
  • Легко тестируемый и поддающийся проверке
  • Может быть заменено чем-то более динамичным, чем константы, без переписывания всего приложения.

Но в то же время это:

  1. Не потребляет намного больше памяти (унаследованный виджет обычно создается один раз)
  2. Работоспособен (получение наследуемого виджета равно O (1))
0 голосов
/ 02 августа 2019

Мое предпочтительное решение - создать собственную библиотеку Dart.

Создайте новый файл дротика с именем constants.dart и добавьте следующий код:

library Constants;

const String SUCCESS_MESSAGE=" You will be contacted by us very soon.";

Затем добавьте следующий оператор импорта в начало любого файла dart, которому требуется доступ к константам:

import 'constants.dart' as Constants;

И теперь вы можете легко получить доступ к своим константам с помощью следующего синтаксиса:

String a = Constants.SUCCESS_MESSAGE;
0 голосов
/ 07 января 2019

Это полностью зависит от вас.
Использование статики не имеет недостатков.
На самом деле const требуется для полей в классе.

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