Как я могу распоряжаться ChangeNotifierProvider <T>.value () в Flutter - PullRequest
0 голосов
/ 06 апреля 2020

как я могу избавиться от ChangeNotifierProvider.value () во Flutter

, чтобы не было утечек памяти

Я сделал объект, который является значением для ChangeNotifierProvider.value (), как единственное, потому что мне нужно больше, чем страница, чтобы разделить их состояние в одном объекте

1 Ответ

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

Вам необходимо использовать dispose() метод State или конструктор по умолчанию ChangeNotifierProvider. Последний автоматически удаляет объект, созданный в функции create.

Интересно, почему вы используете ChangeNotifierProvider.value() вместо ChangeNotifierProvider(), но если вы хотите передать значение на другую страницу, вы можно комбинировать оба варианта следующим образом.

ChangeNotifierProvider<Foo>(
  create: (context) => Foo(),  // this Foo object is disposed of automatically
)

Где-то вниз по дереву:

Navigator.of(context).push(
  MaterialPageRoute<void>(
    builder: (context2) => Provider<Foo>.value(
      value: Provider.of<Foo>(context, listen: false),
      child: NextPage(),
    ),
  ),
)

Примечание: вам не нужно будет делать это, если вы предоставите значение выше MaterialApp.

...