首页 > 解决方案 > Flutter:在 ListView 构建后运行一些代码

问题描述

我想在 ListView.builder() 构建后运行此代码。

if(listViewScrollController.hasClients)
     listViewScrollController.jumpTo(
         listViewScrollController.position.maxScrollExtent,
      );

这将允许用户直接出现在聊天屏幕页面的底部。这需要在 ListView 构建其项目后执行,否则listViewScrollController.position.maxScrollExtent仍将0不是实际值。

标签: flutterlistviewdartscroll

解决方案


您可以使用可见的 Widget并在ListView已加载时显示

在 pubspec.yaml 文件中

dependencies:
  flutter:
    sdk: flutter
  fluttertoast: ^3.1.0
  http: ^0.12.0+2

在 main.dart 文件中

import 'dart:async';
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:http/http.dart' as http;

在类 _MyHomePageState 中声明以下变量

bool _visible=false;
final List<String> entries = <String>[];

创建一个函数来填充列表

void toastmsm(msm,stad) {
    Fluttertoast.showToast(
        msg: msm,
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.BOTTOM,
        backgroundColor: stad,
        textColor: Colors.white,
        fontSize: 16.0
    );
}

Future<String> apiRequest(String url) async {
    var response = await http.get(url);
    return response.body;
}

void getprofil() async{
    //expample.
    entries.clear();
    var enlace="https://www.profilusers.com/list.json";
    var graphql=json.decode(await apiRequest(enlace));
    if(graphql.length==1){
        entries.add(graphql["graphql"]["users"]["url"].toString());
    }
    else{
        toastmsm("no data.", Colors.red);
    }
    setState(() {
      if(graphql.length==1){
        _visible=true;
      }
    });
}

小部件构建

Visibility(
    visible: _visible,
    child: Column(
        children: [
            ListView.builder(
                shrinkWrap: true,
                physics: const BouncingScrollPhysics(),
                itemCount: entries.length,
                itemBuilder: (BuildContext context, int index) =>
                ListBody(
                    children: [
                        Image.network('${entries[index]}'),
                    ],
                ),
            ),
        ],
    ),
),

推荐阅读