Сохранение состояния в представлении вкладок - PullRequest
1 голос
/ 09 января 2020

У меня есть приложение с 3 вкладками. Каждая вкладка является экземпляром какого-то виджета. Теперь, что происходит, каждый раз, когда я проводю вкладки, то данные на вкладке перезагружаются. Я хочу загружать данные только тогда, когда вкладка открывается в первый раз, но если перейти к следующей вкладке и затем вернуться к предыдущей вкладке, она не должна перезагружать данные, а отображать старое состояние.

Следующий виджет создается для каждой вкладки.

class CustomersScreen extends StatefulWidget {
  const CustomersScreen({Key key}) : super(key: key);

  @override
  CustomersScreenState createState() => CustomersScreenState();
}

class CustomersScreenState extends State<CustomersScreen> {
  Firestore fireStore;
  List<Customer> customers = [];
  bool isLoading = false; // track if customers fetching
  bool hasMore = true; // flag for more products available or not
  final int documentLimit = 10; // documents to be fetched per request
  Map<String, Tuple2> filters = Map();
  DocumentSnapshot lastDocument; // next token
  ScrollController _scrollController = ScrollController();

  @override
  void initState() {
    super.initState();
    fireStore = Firestore.instance;
    print("Doing initial load");
    loadData();
  }

Вопросы1:

  • Как предотвратить перезагрузку данных на каждом листе, как описано выше? Одна вещь, о которой я могу думать, это просто использовать флаг isDataloaded, а затем загружать / не загружать данные.

Ответы [ 2 ]

2 голосов
/ 10 января 2020

Попробуйте добавить with AutomaticKeepAliveClientMixin в конце State<CustomerScreen>.

Это должно быть что-то вроде

class CustomersScreenState extends State<CustomersScreen> 
with AutomaticKeepAliveClientMixin {
    @override
    bool get wantKeepAlive => true;

    .... Your code here
}
0 голосов
/ 10 января 2020

Вы используете TabBarView? Если нет, нажмите здесь , чтобы узнать, как это сделать. Он предварительно загружает вкладки и сохраняет их состояние.

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