According to this: sample code
I created my own implementation of TabController:
void main() { runApp(new MyApp()); } class MyApp extends StatefulWidget { @override _MyAppState createState() => new _MyAppState(); } class _MyAppState extends State<MyApp> { TabController _tabController; @override void initState() { super.initState(); _tabController = new TabController(vsync: this, length: choices.length); } @override void dispose() { _tabController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return new MaterialApp( home: new Scaffold( bottomNavigationBar: new Material( color: Colors.blue, child: new TabBar( controller: _tabController, isScrollable: false, tabs: choices.map((Choice choice) { return new Tab( text: null, icon: new Icon(choice.icon), ); }).toList(), ), ), appBar: new AppBar( title: const Text('Swap'), ), body: new TabBarView( controller: _tabController, children: choices.map((Choice choice) { return new Padding( padding: const EdgeInsets.all(16.0), child: new ChoiceCard(choice: choice), ); }).toList(), ), ), ); } }
In line: _tabController = new TabController(vsync: this, length: choices.length);
I got error this message:
error: The argument type '_MyAppState' can't be assigned to the parameter type 'TickerProvider'. (argument_type_not_assignable at [swap] lib/main.dart:24)
What is wrong with my code?
vsync takes a TickerProvider as an argument , that's why we use SingleTickerProviderStateMixin and as the named describes TickerProvider provides Ticker which simply means it tells our app about the Frame update(or Screen Update), so that our AnimationController can generate a new value and we can redraw the animated ...
TabController class Null safety. Coordinates tab selection between a TabBar and a TabBarView. The index property is the index of the selected tab and the animation represents the current scroll positions of the tab bar and the tab bar view. The selected tab's index can be changed with animateTo.
Add with TickerProviderStateMixin
to the end of your State
’s class declaration.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With