dart - 扩展列表下的Flutter ListTile

标签 dart flutter

我目前有一个ExpansionTile,其中有一个包含ListTile的ListView.builder。

我正在做的任务是将多个listTiles放在一个Expansiontile下。

这是文件列表。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 body = new FutureBuilder<Accounts>(
        future: loadAccounts(),
        builder: (context, snapshot){
          if(snapshot.hasData){
            return new ListView.builder(
                itemCount: snapshot.data.accountinfo.length,
                itemBuilder: (context,index){
                  return new Card(
                    child: new Column(
                      mainAxisSize: MainAxisSize.min,
                      children: <Widget>[
                        new ExpansionTile(
                            title: new Text("Johor"),
                            children: <Widget>[
                              new ListTile(
                                title: new Text("${snapshot.data.accountinfo[index].name}"),
                              )
                            ]
                        ),
                      ],
                    ),
                  );
            });
          }else{
            return new Center(
              child: new CircularProgressIndicator(),
            );
          }
        });

    return new Scaffold(
      appBar: new AppBar(title: new Text("Providers")),
      body: body
    );
  }
}

我当前面临的主要问题是ExpansionTile对每个新的ListTile不断重复。

Repeating "Johor" for each new ListTile

关于如何正确放置ExpansionTile的任何想法?

最佳答案

因为你建立

Card(
                    child: new Column(
                      mainAxisSize: MainAxisSize.min,
                      children: <Widget>[
                        new ExpansionTile(
                            title: new Text("Johor"),
                            children: <Widget>[
                              new ListTile(
                                title: new Text("${snapshot.data.accountinfo[index].name}"),
                              )
                            ]
                        ),
                      ],

直到= snapshot.data.accountinfo.length

尝试仅创建具有该长度的ListTile,而不创建整个卡小部件

关于dart - 扩展列表下的Flutter ListTile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52162314/

相关文章:

dart - 导入的库{}和{}都不能被无名表示什么?

javascript - 来自 JS 事件的 AngularDart CustomEvent 监听器

navigation - 在 Flutter 中将 GestureDector 添加到 Listview.builder 卡的正确方法?

google-maps - 使用 Flutter 围绕谷歌地图标记中心相机位置

android - 如何使用flutter阻止用户访问应用程序中的音频文件?

flutter - 在_WidgetsAppState中找不到路由RouteSettings的生成器(“/”(null)

android - 如何使 ClipPath 的背景透明?

dart - dart-polymer项目中缺少web/index.html_bootstrap.dart.js

firebase - 在 Flutter 中使用 FirebaseAuth 检查用户的身份验证状态

flutter - 如何自动换行charts_flutter 图例?