본문 바로가기
Flutter/Flutter FAQ

Flutter TabController 생성자의 `vsync` 속성, `vsync` property in TabController constructor

by 베타코드 2023. 8. 12.
반응형

질문


다음에 따르면: 샘플 코드

나는 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(),
        ),
      ),
    );
  }
}

라인에서: _tabController = new TabController(vsync: this, length: choices.length); 나는 다음 오류 메시지를 받았습니다:

오류: 인수 유형 '_MyAppState'이(가) 'TickerProvider' 매개변수 유형에 할당할 수 없습니다. (argument_type_not_assignable at [swap] lib/main.dart:24)

내 코드에 무엇이 잘못되었나요?


답변


State의 클래스 선언의 끝에 with TickerProviderStateMixin을 추가하세요.

반응형

댓글