Я пытался закодировать приложение, которое динамически меняет свои темы на основе нажатой вкладки. Я пытаюсь использовать
виджет DynamicTheme, но я продолжаю получать эту ошибку (см. Изображение), я использую метод DynamicTheme.of(context).setThemeData(ThemeData(
primaryColor: crypto.color
));
внутри TabBar, куда я должен поместить функцию, или сделатьЯ должен использовать другой метод полностью? Полный код:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new DynamicTheme(
defaultBrightness: Brightness.light,
data: (brightness) => new ThemeData(
primaryColor: Colors.black
),
themedWidgetBuilder: (context,theme){
return MyHomePage();
},
);
}
}
class MyHomePage extends StatefulWidget {
final String title = "Mobile Block Explorer";
@override
_MyHomePageState createState() => _MyHomePageState();
}
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primaryColor: Colors.black),
debugShowCheckedModeBanner: false,
home: DefaultTabController(
length: crypto.length,
child: Scaffold(
appBar: AppBar(
title: Text(widget.title),
bottom: TabBar(
isScrollable: false,
indicatorColor: Colors.black,
tabs: crypto.map((Crypto crypto) {
DynamicTheme.of(context).setThemeData(ThemeData(
primaryColor: crypto.color
));
return Tab(
child: Text("${crypto.title}",
style: TextStyle(color: Colors.white),)
,
);
}).toList()
),
),
body: TabBarView(
children: crypto.map((Crypto crypto) {
return blockView(crypto.url);
}).toList()
)
)
,
),
);
}...More code