Flutter - отдельная функция для каждой вкладки в TabBar - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь сделать приложение новостей во Flutter, пока у меня есть только две вкладки для двух категорий новостей.

Это работает так: у меня есть функция Provider, которая получает данные с сайта новостей, я передаю в аргументах (url и др.) этой функции в зависимости от категории.

class MainScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var newsListRepo = Provider.of<NewsListRepo>(context);
    List<Widget> categories = [VestiList(), SportList()];
    return MaterialApp(
      home: DefaultTabController(
        length: categories.length,
        child: Scaffold(
          appBar: AppBar(
            title: Text('Novinarnica'),
            bottom: PreferredSize(
              preferredSize: Size.fromHeight(kToolbarHeight),
              child: TabBar(
                tabs: [
                  Tab(text: 'Vesti'),
                  Tab(text: 'Sport'),
                ],
              ),
            ),
          ),
          body: TabContent(
            categories: categories,
          ),
        ),
      ),
    );
  }
}

class TabContent extends StatelessWidget {
  final List<Widget> categories;

  const TabContent({Key key, this.categories}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return TabBarView(
      children: categories,
    );
  }
}

Как вы можете видеть в списке категорий, у меня есть два других экрана, которые содержат ListView, заполненный статьями этой категории. В каждом из них у меня есть:

didChangeDependencies() {
    super.didChangeDependencies();
    Provider.of<NewsListRepo>(context).getData(
         href: blicVestiHref,
      image: blicVestiImage,
      title: blicVestiTitle,
      url: blicVestiUrl,);
  }

И ..

 didChangeDependencies() {
    super.didChangeDependencies();
    Provider.of<NewsListRepo>(context).getData(
        href: blicSportHref,
      image: blicSportImage,
      title: blicSportTitle,
      url: blicSportUrl,);
  }

Я вызываю ту же функцию, с разными аргументами, но в TabBar я получаю то же самое.

Так что, если вы запутались. Я задам более короткий вопрос. Как сделать TabBar, где содержимое каждой вкладки может вызывать свою собственную функцию?

...