首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Get Json数据函数在主类中的无状态小部件中有效,但在另一个类中的有状态小部件中不起作用

Get Json数据函数在主类中的无状态小部件中有效,但在另一个类中的有状态小部件中不起作用
EN

Stack Overflow用户
提问于 2021-03-27 17:54:01
回答 1查看 33关注 0票数 0

您好,我尝试在initState和WidgetBuild方法中调用getContacts()函数,但没有得到任何响应,而当我尝试在无状态窗口小部件主类中使用相同的函数并在WidgetBuild方法中调用它时,它可以正常工作。

代码语言:javascript
复制
class ContactsPage extends StatefulWidget {
  @override
  _ContactsPageState createState() => _ContactsPageState();
}

class _ContactsPageState extends State<ContactsPage>
    with SingleTickerProviderStateMixin {
  Query _ref;
  bool isSearching = false;

  get reference => null;
  TabController _tabController;

  Future<void> getContacts() async {
    var client = http.Client();
    String contacts_url =
        'api url example';
    String basicAuth = 'Basic auth example';
    var response = await client.get(contacts_url,
        headers: <String, String>{'authorization': basicAuth});
    print(response.statusCode);
    developer.log(response.body);
  }

@override
  Widget build(BuildContext context) {
    getContacts();
    return DefaultTabController(
        length: 2,
..........
.......
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-27 19:23:13

我不太明白你的意图是什么。如果希望在build方法中使用getContacts返回的值,可以选择使用FutureBuilder。这将允许您根据未来的状态轻松地实现控制流。在下面的代码中,我模拟了示例中getContacts方法的行为。

代码语言:javascript
复制
class ContactsPage extends StatefulWidget {
  @override
  _ContactsPageState createState() => _ContactsPageState();
}

class _ContactsPageState extends State<ContactsPage> {
  Future<List<String>> getContacts() {
    return Future.value(['Contact A', 'Contact B', 'Contact C']);
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: getContacts(),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
          final contacts = snapshot.data as List<String>;

          return ListView.builder(
            itemCount: contacts.length,
            itemBuilder: (BuildContext context, int index) {
              return ListTile(title: Text(contacts[index]));
            },
          );
        } else {
          return CircularProgressIndicator();
        }
      },
    );
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66830002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档