flutter - Flutter:在 ListView 构建后运行一些代码
问题描述
我想在 ListView.builder() 构建后运行此代码。
if(listViewScrollController.hasClients)
listViewScrollController.jumpTo(
listViewScrollController.position.maxScrollExtent,
);
这将允许用户直接出现在聊天屏幕页面的底部。这需要在 ListView 构建其项目后执行,否则listViewScrollController.position.maxScrollExtent
仍将0
不是实际值。
解决方案
您可以使用可见的 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]}'),
],
),
),
],
),
),
推荐阅读
- python - 使用正则表达式在其他字符串中搜索字符串元素
- javascript - 为什么我的方法无法识别我的对象成员?
- bash - 如何使用文件流复制来管道 stdout 和 stderr?
- c++ - 如何在 C++ 中从尾数和指数转换为 Double
- sql - 单行子查询在日期列上返回多于一行
- c++ - c ++向量超出范围与移位变量
- drag-and-drop - 量角器将拖动的元素捕捉到鼠标指针,而不是将其放在目标容器中
- c - C语言如何将特定的JSON数据解析成字符串
- react-native - React Native - 将背景颜色/不透明度添加到整个屏幕但添加到子组件?
- knockout.js - 字段有效时启用提交按钮