Flutter: TabBarView внутри SingleChildScrollViewAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Flutter: TabBarView внутри SingleChildScrollView

Сообщение Anonymous »

Моя проблема в том, что я хочу, чтобы TabBarView находился внутри SingleChildScrollView, но он выдает следующую ошибку:
RenderFlex дочерние элементы имеют ненулевую гибкость, но входящие ограничения по высоте не ограничены.
Если я удалю SingleChildScrollView, это работает, но мне нужен виджет, потому что тогда я хочу нажать ListView, который прокручивается с помощью TabBar, как в Instagram.
Код:
import 'package:flutter/material.dart';

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

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

class _MyAppState extends State with SingleTickerProviderStateMixin {
TabController tabController;

@override
void initState() {
super.initState();
tabController = new TabController(length: 2, vsync: this);
}

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

@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SingleChildScrollView(
child: Column(
children: [
TabBar(
controller: tabController,
tabs: [
Tab(
icon: Icon(
Icons.photo_library,
size: 30,
),
),
Tab(
icon: Icon(
Icons.perm_media,
size: 30,
),
),
],
labelColor: Colors.deepOrange,
unselectedLabelColor: Colors.black,
indicatorColor: Colors.deepOrange,
),
Expanded(
child: TabBarView(controller: tabController, children: [
Expanded(child: Container()),
Expanded(child: Container())
]),
),
],
),
)));
}
}


Изменения:
import 'package:flutter/material.dart';

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

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

class _MyAppState extends State with SingleTickerProviderStateMixin {
TabController tabController;

@override
void initState() {
super.initState();
tabController = new TabController(length: 2, vsync: this);
}

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

@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Column(
mainAxisSize: MainAxisSize.min,
children: [
TabBar(
controller: tabController,
tabs: [
Tab(
icon: Icon(
Icons.photo_library,
size: 30,
),
),
Tab(
icon: Icon(
Icons.perm_media,
size: 30,
),
),
],
labelColor: Colors.deepOrange,
unselectedLabelColor: Colors.black,
indicatorColor: Colors.deepOrange,
),
Expanded(
child: SingleChildScrollView(child:TabBarView(controller: tabController, children: [
Container(),
Container()
]),
),)
],
),
));
}
}


Подробнее здесь: https://stackoverflow.com/questions/624 ... scrollview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»