flutter - 即使使用 ScrollPhysics 也无法滚动 ListView

标签 flutter dart

我有一个屏幕,我需要在应用栏中搜索术语,下面的区域显示一张卡片,其中包含显示列表中的选项,下面的区域将在可滚动列表中显示返回的所有结果。

pic

问题是,虽然返回的项目放置在 ListView.builder 中并且 ScrollPhysics 处于打开状态,但列表不可滚动。如果我单击卡片并尝试拖动,它会滚动一点。但无法通过单击列表或其中的项目来进行拖动。

import '...';

class DiagnosisAdd extends StatefulWidget {
  @override
  _DiagnosisAddState createState() => _DiagnosisAddState();
}

class _DiagnosisAddState extends State<DiagnosisAdd> {
  TextField searchBar;
  TextEditingController searchTextController;
  Network connection;
  List<ICDCode> DiagnosisList;
  List<ICDCode> selectedDiagnoses;

  @override
  void initState() {
    connection = Network();
    DiagnosisList = [];
    selectedDiagnoses = [];
    // searchBar = A widget
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: searchBar,
      ),
      body: ListView(
        physics: AlwaysScrollableScrollPhysics(),
        shrinkWrap: true,
        children: [
          Card(
            child: ListTile(
              title: Text("Selected Diagnoses"),
              subtitle: Wrap(
                children: List.generate(
                  selectedDiagnoses.length,
                  (index) => Text(selectedDiagnoses[index].disease),
                  growable: true,
                ),
              ),
            ),
          ),
          ListView.builder(
            physics: AlwaysScrollableScrollPhysics(),
            shrinkWrap: true,
            itemCount: DiagnosisList.length,
            itemBuilder: (BuildContext context, int position) {
              ICDCode codeDiagnosis = DiagnosisList[position];
              return RaisedButton(
                  child:
                      Text('${codeDiagnosis.code}, ${codeDiagnosis.disease}'),
                  onPressed: () {});
            },
          )
        ],
      ),
    );
  }

  Future searchDiagnosis(String text) async {
    if (text.length < 3) {
      return false;
    }
    var response = await connection.searchICDbyDisease(
      searchString: text,
    );
    final jsonResponse = await json.decode(response);
    List<ICDCode> diagnosis_list =
        await jsonResponse.map<ICDCode>((i) => ICDCode.fromJson(i)).toList();
    setState(() {
      DiagnosisList = diagnosis_list;
    });
  }
}

最佳答案

您无法滚动 ListView,因为该 ListView 内还有另一个可以滚动的 ListView.builder()。您必须使 ListView.builder() 不可滚动:

ListView.builder(
            physics: NeverScrollableScrollPhysics(),
)

您不能有两个可以同时一起滚动的嵌套小部件。您必须禁用嵌套小部件的滚动,以便您滚动的是 ListView 而不是 ListView.builder()

关于flutter - 即使使用 ScrollPhysics 也无法滚动 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63985685/

相关文章:

string - 删除具有两个连续字母的给定字符串的一个字母

flutter - 从Flutter中的Firestore检索数据后为空列表

firebase - 如何在flutter中添加尝试功能?

flutter - FirebaseDynamicLinks getInitialLink() 多次触发

flutter - 无法使用 just_audio 在 Flutter Android 中播放声音

angular - Multi-Tenancy Angular 2 Dart 应用程序

flutter - 如何在Flutter中使用drawLine()和drawCircle()绘制4条等距离线的圆

image - Flutter图像内存未得到gc

dart - 忽略小部件的自定义宽度/高度属性

flutter - 有没有办法使用在 android 设备上运行的 flutter 应用程序访问或控制 raspberry pi GPIO 引脚?