gpt4 book ai didi

flutter 错误 : No TabController for TabBarView

转载 作者:行者123 更新时间:2023-12-03 04:18:30 27 4
gpt4 key购买 nike

我想在我的 flutter 页面中添加一些标签,但没有一个只有标签的页面。
简而言之,我有一些输入字段,在它们下面我想放置我的标签。
我不断收到此错误:TabBarView 没有 TabController。我已经将状态类与 TickerProviderStateMixin 一起提供给 Controller 工作,但我无法弄清楚为什么它说没有找到 tabcontroller,当它存在时。
问题是我已经有一个选项卡 Controller ,这是代码:

class ProductBody extends StatefulWidget {
@override
_ProductBodyState createState() => _ProductBodyState();
}
class _ProductBodyState extends State<ProductBody> with TickerProviderStateMixin{
TabController _controller;

@override
void initState() {

_controller = new TabController(length: 2, vsync: this);

super.initState();
}

@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.only(top: 20.0, left: 20.0, right: 20.0),
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
children: <Widget>[
Align(
alignment: Alignment.centerLeft,
child: Text(
"Select category:",
style: TextStyle(
color: Colors.green,
fontWeight: FontWeight.bold,
fontSize: 16,
),
),
),

Container(
decoration: new BoxDecoration(color: Theme.of(context).primaryColor),
child: new TabBar(
controller: _controller,
tabs: [
Tab(
icon: const Icon(Icons.home),
text: 'Address',
),
Tab(
icon: const Icon(Icons.my_location),
text: 'Location',
),
],
),
),
Container(
height: 80.0,
child: new TabBarView(
controller: _controller,
children: <Widget>[
new Card(
child: new ListTile(
leading: const Icon(Icons.home),
title: new TextField(
decoration: const InputDecoration(hintText: 'Search for address...'),
),
),
),
new Card(
child: new ListTile(
leading: const Icon(Icons.location_on),
title: new Text('Latitude: 48.09342\nLongitude: 11.23403'),
trailing: new IconButton(icon: const Icon(Icons.my_location), onPressed: () {}),
),
),
],
),
),
],
),
),
);
}
}

最佳答案

使用 SingleTickerProviderStateMixin .您只有一个 Controller 。
我通过你的代码 Dart 没有任何问题,它工作正常。检查您的其他代码。
enter image description here
刚开https://dartpad.dartlang.org/flutter并粘贴这些代码。

import 'package:flutter/material.dart';

final Color darkBlue = Color.fromARGB(255, 18, 32, 47);

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

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: ProductBody(),
),
),
);
}
}

class ProductBody extends StatefulWidget {
@override
_ProductBodyState createState() => _ProductBodyState();
}
class _ProductBodyState extends State<ProductBody> with TickerProviderStateMixin{
TabController _controller;

@override
void initState() {

_controller = new TabController(length: 2, vsync: this);

super.initState();
}

@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.only(top: 20.0, left: 20.0, right: 20.0),
child: SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Column(
children: <Widget>[
Align(
alignment: Alignment.centerLeft,
child: Text(
"Select category:",
style: TextStyle(
color: Colors.green,
fontWeight: FontWeight.bold,
fontSize: 16,
),
),
),

Container(
decoration: new BoxDecoration(color: Theme.of(context).primaryColor),
child: new TabBar(
controller: _controller,
tabs: [
Tab(
icon: const Icon(Icons.home),
text: 'Address',
),
Tab(
icon: const Icon(Icons.my_location),
text: 'Location',
),
],
),
),
Container(
height: 80.0,
child: new TabBarView(
controller: _controller,
children: <Widget>[
new Card(
child: new ListTile(
leading: const Icon(Icons.home),
title: new TextField(
decoration: const InputDecoration(hintText: 'Search for address...'),
),
),
),
new Card(
child: new ListTile(
leading: const Icon(Icons.location_on),
title: new Text('Latitude: 48.09342\nLongitude: 11.23403'),
trailing: new IconButton(icon: const Icon(Icons.my_location), onPressed: () {}),
),
),
],
),
),
],
),
),
);
}
}


关于 flutter 错误 : No TabController for TabBarView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63987180/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com