使用API响应填充Flutter TabBar可以通过以下步骤实现:
以下是一个示例代码,演示如何使用API响应填充Flutter TabBar:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class MyTabBar extends StatefulWidget {
@override
_MyTabBarState createState() => _MyTabBarState();
}
class _MyTabBarState extends State<MyTabBar> {
Future<List<String>> fetchData() async {
final response = await http.get('https://api.example.com/tabs');
if (response.statusCode == 200) {
final data = json.decode(response.body);
List<String> tabs = [];
for (var tab in data['tabs']) {
tabs.add(tab['name']);
}
return tabs;
} else {
throw Exception('Failed to fetch data');
}
}
@override
Widget build(BuildContext context) {
return FutureBuilder<List<String>>(
future: fetchData(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
} else if (snapshot.hasError) {
return Center(child: Text('Error: ${snapshot.error}'));
} else {
return DefaultTabController(
length: snapshot.data.length,
child: Scaffold(
appBar: AppBar(
title: Text('My TabBar'),
bottom: TabBar(
tabs: snapshot.data.map((tab) => Tab(text: tab)).toList(),
),
),
body: TabBarView(
children: snapshot.data.map((tab) => Text(tab)).toList(),
),
),
);
}
},
);
}
}
void main() {
runApp(MaterialApp(
home: MyTabBar(),
));
}
在这个示例中,fetchData函数发送了一个GET请求到https://api.example.com/tabs,并解析响应数据为JSON格式。然后,使用提取的标签数据构建了TabBar的标签。最后,使用DefaultTabController和TabBarView来显示TabBar和对应的内容。
请注意,这只是一个示例代码,你需要根据你的实际需求进行适当的修改和调整。同时,你还可以根据你的API响应结构和需求,使用其他Flutter组件来展示和处理数据。
领取专属 10元无门槛券
手把手带您无忧上云