Version
1.27.0
Platforms
iOS, Android
Device Model
readme(Android 10)
flutter info
[√] Flutter (Channel stable, 3.44.6, on Microsoft Windows [版本 10.0.26200.9168], locale zh-CN) [473ms]
• Flutter version 3.44.6 on channel stable at D:\lib\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision ee80f08bbf (6 weeks ago), 2026-07-08 15:02:06 -0700
• Engine revision 83675ed276
• Dart version 3.12.2
• DevTools version 2.57.0
• Pub download mirror https://pub.flutter-io.cn
• Flutter download mirror https://storage.flutter-io.cn
• Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, enable-swift-package-manager,
omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration
[√] Windows Version (11 Home China 64-bit, 25H2, 2009) [1,647ms]
[√] Android toolchain - develop for Android devices (Android SDK version 37.0.0) [3.3s]
• Android SDK at D:\lib\android_kid\sdk
• Emulator version 36.6.11.0 (build_id 15507667) (CL:N/A)
• Platform android-37.0, build-tools 37.0.0
• ANDROID_HOME = D:\lib\android_kid\sdk
• Java binary at: D:\tool\AndroidStudio\jbr\bin\java
This is the JDK bundled with the latest Android Studio installation on this machine.
To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
• Java version OpenJDK Runtime Environment (build 17.0.11+0--11852314)
• All Android licenses accepted.
[X] Chrome - develop for the web (Cannot find Chrome executable at .\Google\Chrome\Application\chrome.exe) [184ms]
! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[√] Visual Studio - develop Windows apps (Visual Studio 生成工具 2026 18.7.0) [182ms]
• Visual Studio at D:\lib\msvc_2022
• Visual Studio 生成工具 2026 version 18.7.11903.348
• Windows 10 SDK version 10.0.26100.0
[√] Connected device (3 available) [395ms]
• Redmi Note 7 Pro (mobile) • 1d67d46e • android-arm64 • Android 10 (API 29)
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [版本 10.0.26200.9168]
• Edge (web) • edge • web-javascript • Microsoft Edge 151.0.4129.86
How to reproduce?
在DEMO中
一开始点击add后list会新增并setState重绘,再点击jump进行跳转
无法跳转到新增item
第二次点击jump则可以跳转
我认为这是grid没有加载非可视区域item导致的(list新增后_scrollCtrl.position.maxScrollExtent未发生变化)
Logs
Example code (optional)
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:scrollview_observer/scrollview_observer.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight,
]);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: .fromSeed(seedColor: Colors.deepPurple),
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final List<Color> _list = [];
final ScrollController _scrollCtrl = ScrollController();
late GridObserverController _observerCtrl;
void _add() {
final List<Color> list = [
Colors.red,
Colors.green,
Colors.blue,
Colors.yellow,
];
for(int i = 0; i < 5; i ++) {
_list.addAll(list);
}
setState(() {
});
}
void _jump() {
_observerCtrl.jumpTo(
index: _list.length - 1,
isFixedHeight: true,
);
}
@override
void initState() {
super.initState();
_observerCtrl = GridObserverController(controller: _scrollCtrl);
_add();
}
@override
Widget build(BuildContext context) {
final crossCount = 4;
final crossSpacing = 5.0;
final Size screen = MediaQuery.of(context).size;
final double cellWidth = (screen.width - (crossCount - 1) * crossSpacing) / crossCount;
debugPrint("list length: ${_list.length} cellSize: $cellWidth");
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text("Observer grid"),
actions: [
const SizedBox(width: 10),
TextButton(onPressed: _add, child: const Text("1st add")), // first click
const SizedBox(width: 10),
TextButton(onPressed: _jump, child: const Text("2nd jump")), // second click
const SizedBox(width: 10),
],
),
body: Center(
child: GridViewObserver(
controller: _observerCtrl,
child: GridView.custom(
controller: _scrollCtrl,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: crossCount,
mainAxisSpacing: crossSpacing,
crossAxisSpacing: crossSpacing,
mainAxisExtent: cellWidth,
),
childrenDelegate: SliverChildBuilderDelegate(
(ctx, index) {
return Container(
color: _list[index],
child: Center(
child: Text(
(index + 1).toString(),
style: const TextStyle(color: Colors.black, fontSize: 22),
),
),
);
},
childCount: _list.length,
),
),
),
),
);
}
}
Contact
382805749@qq.com
Version
1.27.0
Platforms
iOS, Android
Device Model
readme(Android 10)
flutter info
[√] Flutter (Channel stable, 3.44.6, on Microsoft Windows [版本 10.0.26200.9168], locale zh-CN) [473ms] • Flutter version 3.44.6 on channel stable at D:\lib\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision ee80f08bbf (6 weeks ago), 2026-07-08 15:02:06 -0700 • Engine revision 83675ed276 • Dart version 3.12.2 • DevTools version 2.57.0 • Pub download mirror https://pub.flutter-io.cn • Flutter download mirror https://storage.flutter-io.cn • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, enable-swift-package-manager, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration [√] Windows Version (11 Home China 64-bit, 25H2, 2009) [1,647ms] [√] Android toolchain - develop for Android devices (Android SDK version 37.0.0) [3.3s] • Android SDK at D:\lib\android_kid\sdk • Emulator version 36.6.11.0 (build_id 15507667) (CL:N/A) • Platform android-37.0, build-tools 37.0.0 • ANDROID_HOME = D:\lib\android_kid\sdk • Java binary at: D:\tool\AndroidStudio\jbr\bin\java This is the JDK bundled with the latest Android Studio installation on this machine. To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`. • Java version OpenJDK Runtime Environment (build 17.0.11+0--11852314) • All Android licenses accepted. [X] Chrome - develop for the web (Cannot find Chrome executable at .\Google\Chrome\Application\chrome.exe) [184ms] ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable. [√] Visual Studio - develop Windows apps (Visual Studio 生成工具 2026 18.7.0) [182ms] • Visual Studio at D:\lib\msvc_2022 • Visual Studio 生成工具 2026 version 18.7.11903.348 • Windows 10 SDK version 10.0.26100.0 [√] Connected device (3 available) [395ms] • Redmi Note 7 Pro (mobile) • 1d67d46e • android-arm64 • Android 10 (API 29) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [版本 10.0.26200.9168] • Edge (web) • edge • web-javascript • Microsoft Edge 151.0.4129.86How to reproduce?
在DEMO中
一开始点击add后list会新增并setState重绘,再点击jump进行跳转
无法跳转到新增item
第二次点击jump则可以跳转
我认为这是grid没有加载非可视区域item导致的(list新增后_scrollCtrl.position.maxScrollExtent未发生变化)
Logs
Example code (optional)
Contact
382805749@qq.com