dart – 颤振垂直视口无界高度误差
发布时间:2020-12-14 14:49:00 所属栏目:百科 来源:网络整理
导读:我做了一个应用程序来显示一个州的医院列表. 这是Main.dart import 'package:flutter/material.dart';import 'package:url_launcher/url_launcher.dart';import 'dart:async' show Future;import 'package:flutter/services.dart' show rootBundle;import 'd
我做了一个应用程序来显示一个州的医院列表.
这是Main.dart import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; import 'dart:async' show Future; import 'package:flutter/services.dart' show rootBundle; import 'dart:convert'; import 'package:emas_app/model/accounts_model.dart'; Future<String> _loadAsset() async{ return await rootBundle.loadString('Assets/accounts.json'); } Future<Accounts> loadAccounts() async{ final response = await _loadAsset(); final jsonResponse = json.decode(response); Accounts accounts = new Accounts.fromJson(jsonResponse); return accounts; } class ProviderList extends StatefulWidget { @override ListState createState() { return new ListState(); } } class ListState extends State<ProviderList> { @override Widget build(BuildContext context) { Widget newbody = new ExpansionTile( title: new Text("State Name"),children: <Widget>[ new FutureBuilder<Accounts>( future: loadAccounts(),builder: (context,snapshot){ if(snapshot.hasData){ return new ListView.builder( itemCount: snapshot.data.accountinfo.length,itemBuilder: (context,index){ String username = snapshot.data.accountinfo[index].name; String address = snapshot.data.accountinfo[index].street; String lat = snapshot.data.accountinfo[index].coordinates.lat; String lng = snapshot.data.accountinfo[index].coordinates.lng; return new ListTile( title: new Text(username),trailing: new Row( mainAxisSize: MainAxisSize.min,mainAxisAlignment: MainAxisAlignment.end,children: <Widget>[ new IconButton( icon: Icon(Icons.info),onPressed: null ),new IconButton( icon: Icon(Icons.directions),onPressed: null ) ],) ); }); }else{ return new Center( child: new CircularProgressIndicator(),); } }) ]); return new Scaffold( appBar: new AppBar(title: new Text("Providers")),body: newbody ); } } 这是显示扩展的ExpansionTile为空的输出: 这是错误抓住: I/flutter ( 6305): Vertical viewport was given unbounded height. I/flutter ( 6305): Viewports expand in the scrolling direction to fill their container.In this case,a vertical I/flutter ( 6305): viewport was given an unlimited amount of vertical space in which to expand. This situation I/flutter ( 6305): typically happens when a scrollable widget is nested inside another scrollable widget. 我已经尝试了我可以在Stack Overflow中找到的所有可能的解决方案,通过使用Expanded或Flexible包装ListView.builder但它不起作用.关于如何解决这个问题的任何想法? 解决方法
有两种解决方案:
>使用ListView的shrinkWrap属性 new ListView.builder( shrinkWrap: true,itemCount: ... 原因: 在您的情况下,ListView位于ExpansionTile中. ExpansionTile将展示扩展并展示有多少孩子.当ListView放置在ExpansionTile(无界约束小部件)中时,ListView将扩展到scrollDirection中的最大大小.根据文档, If the scroll view does not shrink wrap,then the scroll view will expand to the maximum allowed size in the [scrollDirection]. If the scroll view has unbounded constraints in the [scrollDirection],then [shrinkWrap] must be true. >使用SizedBox为ListView提供固定高度. SizedBox(height: 200.0,child: new ListView.builder(...)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |