Я пытаюсь сделать приложение новостей во 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, где содержимое каждой вкладки может вызывать свою собственную функцию?