首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为TabController修复无TabBar

如何为TabController修复无TabBar
EN

Stack Overflow用户
提问于 2021-06-14 10:55:40
回答 1查看 1.1K关注 0票数 0

我是一个新的颤振和我试图做一个TabBar视图,在图中。但是它显示了"No TabController for TabBar“,在创建TabBarView时,必须使用”控制器“属性提供显式的TabController,或者必须确保TabBarView上方有一个DefaultTabController。在这种情况下,既没有显式控制器,也没有默认控制器。我已经尝试了一个在互联网上提到的建议,但仍然有错误。有人能帮我修一下吗?谢谢

代码语言:javascript
复制
class _TransactionState extends State<Transaction> with SingleTickerProviderStateMixin {
  int _value = 1;
  TabController controller;
  @override
  void initState() {
    controller = new TabController(vsync: this, length: 2);
    super.initState();
  }
  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Transaction'),
        actions: <Widget>[
          DropdownButton(
            dropdownColor: primary,
            value: _value,
            items: [
              DropdownMenuItem(
                child: Text(
                  "Daily",
                  style: TextStyle(color: Colors.white,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                value: 1,
              ),
              DropdownMenuItem(
                child: Text("Monthly",
                  style: TextStyle(color: Colors.white,
                    fontWeight: FontWeight.bold,
                  ),),
                value: 2,
              ),
              DropdownMenuItem(
                child: Text("Yearly",
                  style: TextStyle(color: Colors.white,
                    fontWeight: FontWeight.bold,
                  ),),
                value: 3,
              ),
            ],
            onChanged: (int value){
              setState(() {
                _value = value;
              });
              //Padding(padding: EdgeInsets.all(20.0));
              style: new TextStyle(
                color: Colors.white,
              );
            },
          ),
        ],
        automaticallyImplyLeading: false,
        backgroundColor: secondary,
        bottom: new TabBar(
          controller: controller,
          tabs: <Widget>[
            new Tab(icon: new Icon(Icons.add_shopping_cart),text: "Expense",),
            new Tab(icon: new Icon(Icons.attach_money),text: "Income",),
          ],
        ),
      ),
      body: TabBarView(
        controller: controller,
        children: <Widget>[
          new expense.TransactionExpense(),
          new income.TransactionIncome(),
        ],
      ),
    );
  }
}

EN

回答 1

Stack Overflow用户

发布于 2022-01-10 20:20:14

这应该能解决这个问题。

代码语言:javascript
复制
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MyAppState()
    );
  }
}

class MyAppState extends StatefulWidget{
  
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyAppState> with TickerProviderStateMixin {
  TabController _controller;
  final List<Tab> topTabs = <Tab>[
    new Tab(text: 'Profile'),
    new Tab(text: 'Match'),
    new Tab(text: 'Chat'),
  ];

  @override
  void initState() {
   super.initState();

   _controller = TabController(vsync: this, length: 3);
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }


  @override
  Widget build(BuildContext context) {
      return  Scaffold(
            appBar: AppBar(
              title: Text('MyApp'),
              bottom: TabBar(
                  controller: _controller,
                  tabs: topTabs,
              ),
            ),
            body: TabBarView(
                controller: _controller,
                children: [
              new Container(
                color: Colors.lightBlueAccent,
                child: Center(child: Text('Profile', style: TextStyle(color: Colors.white),),),
              ),
              new Container(
                color: Colors.purpleAccent,
                child: Center(child: Text('Match', style: TextStyle(color: Colors.white),),),
              ),
              new Container(
                color: Colors.lightGreenAccent,
                child: Center(child: Text('Chat', style: TextStyle(color: Colors.white),),),
            )
            ]),
          );
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67968981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档