在Flutter中,可以使用async
和await
关键字来从API中预取数据,然后在打开ShowModalBottomSheet
之前进行数据加载。下面是一个示例代码:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
List<dynamic> data = [];
Future<void> fetchData() async {
final response = await http.get(Uri.parse('https://api.example.com/data'));
if (response.statusCode == 200) {
setState(() {
data = json.decode(response.body);
});
} else {
throw Exception('Failed to fetch data');
}
}
@override
void initState() {
super.initState();
fetchData();
}
void openModalBottomSheet() {
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return Container(
child: ListView.builder(
itemCount: data.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(data[index]['title']),
subtitle: Text(data[index]['subtitle']),
);
},
),
);
},
);
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () {
openModalBottomSheet();
},
child: Text('Open Modal Bottom Sheet'),
);
}
}
在上面的示例中,我们首先定义了一个fetchData
方法,它使用http
包发送HTTP请求来获取数据。然后,在initState
方法中调用fetchData
方法来预取数据并将其保存在data
列表中。
当点击按钮时,调用openModalBottomSheet
方法来打开ShowModalBottomSheet
。在builder
回调中,我们使用ListView.builder
来构建底部模态框中的列表,并使用预取的数据来填充列表项。
请注意,这只是一个示例代码,实际情况中,您需要根据您的API和数据结构进行适当的修改。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云数据库MySQL版、腾讯云人工智能服务等。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。
领取专属 10元无门槛券
手把手带您无忧上云