ExpansionTile下的Flutter ListTile

问题描述 投票:0回答:1

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

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

这是文件list.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的任何想法?

dart flutter
1个回答
0
投票

因为你建造

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}"),
                              )
                            ]
                        ),
                      ],

Till = snapshot.data.accountinfo.length

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

© www.soinside.com 2019 - 2024. All rights reserved.