使用syncfusion_flutter_pdfviewer时设备连接丢失问题求助
问题描述
我尝试使用syncfusion_flutter_pdfviewer包展示PDF,执行步骤如下:
- 创建包含
syncfusion_flutter_pdfviewer的页面 - 在设备上运行应用
- 出现“Lost connection to device”错误
需求:正常显示包含PDF的页面
代码示例
import 'package:flutter/material.dart'; import 'package:flutter/src/widgets/framework.dart'; import 'package:flutter/src/widgets/placeholder.dart'; import 'package:miniawradreborn/page/appbar_page.dart'; import 'package:miniawradreborn/page/model_list.dart'; import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart'; import 'list_page.dart'; class single_list extends StatefulWidget { final List<Model_list> Modellist; int index; final List<Model_pdf> Modelpdf; single_list( {super.key, required this.Modellist, required this.index, required this.Modelpdf}); @override State<single_list> createState() => _single_listState(); } class _single_listState extends State<single_list> { @override Widget build(BuildContext context) { Size size = MediaQuery.of(context).size; return Scaffold( body: SingleChildScrollView( child: Column( children: [ AppBar_normalpage(judul: widget.Modellist[widget.index].nama), Container( decoration: BoxDecoration(color: Colors.white), width: MediaQuery.of(context).size.width, height: 600, margin: EdgeInsets.all(20), // padding: EdgeInsets.all(20), child: Container( child: SfPdfViewer.asset( widget.Modelpdf[widget.index].pdf!, enableDoubleTapZooming: true, pageSpacing: 0, initialZoomLevel: 0, pageLayoutMode: PdfPageLayoutMode.continuous, ), ), ) ], ), ), ); } }
日志信息
Running "flutter pub get" in miniawradreborn... Resolving dependencies... async 2.10.0 (2.11.0 available) characters 1.2.1 (1.3.0 available) collection 1.17.0 (1.17.1 available) js 0.6.5 (0.6.7 available) matcher 0.12.13 (0.12.14 available) material_color_utilities 0.2.0 (0.3.0 available) meta 1.8.0 (1.9.0 available) path 1.8.2 (1.8.3 available) path_provider_foundation 2.1.3 (2.2.0 available) petitparser 5.1.0 (5.3.0 available) syncfusion_flutter_core 20.4.53 (20.4.54 available) syncfusion_flutter_pdf 20.4.53 (20.4.54 available) syncfusion_flutter_pdfviewer 20.4.53 (20.4.54 available) syncfusion_pdfviewer_macos 20.4.53 (20.4.54 available) syncfusion_pdfviewer_platform_interface 20.4.53 (20.4.54 available) syncfusion_pdfviewer_web 20.4.53 (20.4.54 available) syncfusion_pdfviewer_windows 20.4.53 (20.4.54 available) test_api 0.4.16 (0.4.18 available) win32 3.1.3 (4.1.1 available) These packages are no longer being depended on: - flutter_pdfview 1.2.9 Changed 1 dependency! Launching lib\main.dart on SM N960F in debug mode... Parameter format not correct - √ Built build\app\outputs\flutter-apk\app-debug.apk. Error: ADB exited with exit code 1 Uninstalling old version... Performing Streamed Install adb: failed to install D:\MediaTech\Cyber\Aplikasi\Aplikasi Mini Awrad Santri\miniawradreborn\build\app\outputs\flutter-apk\app-debug.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.example.miniawradreborn signatures do not match previously installed version; ignoring!] Connecting to VM Service at ws://127.0.0.1:50117/KFclYh_Urt4=/ws [GETX] Instance "GetMaterialController" has been created [GETX] Instance "GetMaterialController" has been initialized I/miniawradrebor(19078): Compiler allocated 4218KB to compile void android.view.ViewRootImpl.performTraversals() W/Gralloc3(19078): mapper 3.x is not supported I/gralloc (19078): Arm Module v1.0 I/OpenGLRenderer(19078): doUpdatePositionAsync is called and callVoidMethod I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/miniawradrebor(19078): Background young concurrent copying GC freed 319(134KB) AllocSpace objects, 13(2788KB) LOS objects, 35% free, 5309KB/8237KB, paused 116us total 114.373ms I/miniawradrebor(19078): Background concurrent copying GC freed 43(56KB) AllocSpace objects, 7(5060KB) LOS objects, 66% free, 3120KB/9264KB, paused 55us total 272.349ms D/InputMethodManager(19078): prepareNavigationBarInfo() DecorView@9f28167[MainActivity] D/InputMethodManager(19078): getNavigationBarColor() -855310 V/InputMethodManager(19078): Starting input: tba=com.example.miniawradreborn ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false D/InputMethodManager(19078): startInputInner - Id : 0 I/InputMethodManager(19078): startInputInner - mService.startInputOrWindowGainedFocus D/InputTransport(19078): Input channel destroyed: 'ClientS', fd=94 D/InputMethodManager(19078): prepareNavigationBarInfo() DecorView@9f28167[MainActivity] D/InputMethodManager(19078): getNavigationBarColor() -855310 V/InputMethodManager(19078): Starting input: tba=com.example.miniawradreborn ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false D/InputMethodManager(19078): startInputInner - Id : 0 I/InputMethodManager(19078): startInputInner - mService.startInputOrWindowGainedFocus I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/miniawradrebor(19078): NativeAlloc concurrent copying GC freed 528(152KB) AllocSpace objects, 10(3924KB) LOS objects, 74% free, 2078KB/8222KB, paused 108us total 111.658ms I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 0 I/ViewRootImpl@81bcd03[MainActivity](19078): ViewPostIme pointer 1 Lost connection to device. Exited (sigterm)
flutter doctor结果
flutter doctor -v [√] Flutter (Channel stable, 3.7.2-0.0.pre.1, on Microsoft Windows [Version 10.0.19043.1645], locale en-ID) • Flutter version 3.7.2-0.0.pre.1 on channel stable at C:\src\flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision a40e08605f (2 weeks ago), 2023-03-01 00:40:27 +0700 • Engine revision 800594f1f4 • Dart version 2.19.1 • DevTools version 2.20.1 [√] Windows Version (Installed version of Windows is version 10 or higher) [√] Android toolchain - develop for Android devices (Android SDK version 33.0.1) • Android SDK at C:\Users\cyber\AppData\Local\Android\sdk • Platform android-33, build-tools 33.0.1 • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866) • All Android licenses accepted. [√] Chrome - develop for the web • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe [√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.4.4) • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community • Visual Studio Community 2022 version 17.4.33213.308 • Windows 10 SDK version 10.0.20348.0 [√] Android Studio (version 2021.3) • Android Studio at C:\Program Files\Android\Android Studio • Flutter plugin can be installed from: https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866) [√] VS Code (version 1.76.2) • VS Code at C:\Users\cyber\AppData\Local\Programs\Microsoft VS Code • Flutter extension version 3.61.20230301 [√] Connected device (3 available) • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19043.1645] • Chrome (web) • chrome • web-javascript • Google Chrome 111.0.5563.65 • Edge (web) • edge • web-javascript • Microsoft Edge 111.0.1661.41 [√] HTTP Host Availability • All required HTTP hosts are available • No issues found!
解决步骤
1. 修复应用安装签名冲突
日志中明确提示INSTALL_FAILED_UPDATE_INCOMPATIBLE,这是设备上已安装的应用签名与当前编译包签名不匹配导致的:
- 手动卸载设备上的旧版应用,重新执行
flutter run - 若使用自定义签名文件,确保当前编译使用的签名与已安装版本一致
2. 调整布局结构
代码中SingleChildScrollView与SfPdfViewer嵌套会引发滚动冲突,且固定高度可能导致适配问题,修改后的布局如下:
@override Widget build(BuildContext context) { return Scaffold( body: Column( children: [ AppBar_normalpage(judul: widget.Modellist[widget.index].nama), Expanded( child: Container( decoration: BoxDecoration(color: Colors.white), margin: EdgeInsets.all(20), child: SfPdfViewer.asset( widget.Modelpdf[widget.index].pdf!, enableDoubleTapZooming: true, pageSpacing: 0, initialZoomLevel: 0, pageLayoutMode: PdfPageLayoutMode.continuous, ), ), ) ], ), ); }
- 移除
SingleChildScrollView,SfPdfViewer自身支持滚动 - 使用
Expanded让PDFViewer填充AppBar下方的剩余空间,替代固定高度
3. 验证PDF资源配置
确保PDF文件已在pubspec.yaml中正确声明:
flutter: assets: - assets/pdfs/ # 替换为你的PDF资源路径
4. 更新依赖包
日志显示syncfusion相关包有可用更新,执行以下命令升级到最新稳定版:
flutter pub upgrade syncfusion_flutter_pdfviewer
内容的提问来源于stack exchange,提问作者Lam
相关产品推荐
相关产品推荐

