Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:flutter/material.dart';
- void main() => runApp(MyApp());
- class MyApp extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return MaterialApp(home: ScrollableTabsDemo());
- }
- }
- class _Page {
- const _Page({this.icon, this.text});
- final IconData icon;
- final String text;
- }
- const List<_Page> _allPages = <_Page>[
- _Page(text: 'tab 1'),
- _Page(text: 'tab 2'),
- _Page(text: 'tab 3'),
- ];
- class ScrollableTabsDemo extends StatefulWidget {
- static const String routeName = '/material/scrollable-tabs';
- @override
- ScrollableTabsDemoState createState() => ScrollableTabsDemoState();
- }
- class ScrollableTabsDemoState extends State<ScrollableTabsDemo>
- with SingleTickerProviderStateMixin {
- TabController _controller;
- @override
- void initState() {
- super.initState();
- _controller = TabController(vsync: this, length: _allPages.length);
- }
- @override
- void dispose() {
- _controller.dispose();
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- final Color iconColor = Theme.of(context).accentColor;
- return Scaffold(
- appBar: AppBar(
- title: const Text('Scrollable tabs'),
- bottom: TabBar(
- controller: _controller,
- isScrollable: true,
- tabs: _allPages.map<Tab>((_Page page) {
- return Tab(text: page.text);
- }).toList(),
- ),
- ),
- body: TabBarView(
- controller: _controller,
- children: _allPages.map<Widget>((_Page page) {
- return SafeArea(
- top: false,
- bottom: false,
- child: LayoutBuilder(builder: (context, constraints) {
- return FutureBuilder<int>(
- future: getPageCount(),
- builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
- switch (snapshot.connectionState) {
- case ConnectionState.none:
- print("none ${snapshot.data}");
- return Text('none');
- case ConnectionState.active:
- print("active ${snapshot.data}");
- return Text('active');
- case ConnectionState.waiting:
- print("waiting ${snapshot.data}");
- return Center(child: CircularProgressIndicator());
- case ConnectionState.done:
- print("done ${snapshot.data}");
- return buildPageView(snapshot.data);
- }
- });
- }),
- );
- }).toList(),
- ),
- );
- }
- Future<int> getPageCount() => Future.delayed(Duration(seconds: 3), () => 5);
- Widget buildPageView(int pageCount) {
- return PageView.builder(
- itemBuilder: (context, position) {
- return Container(child: Center(child: Text(position.toString())));
- },
- itemCount: pageCount,
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement