繁体   English   中英

在 Flutter 上出现错误 - 请求导航器操作

[英]Get Error on Flutter - Navigator operation requested

我只想做一个简单的任务来打开文件资源管理器。 我尝试了 file_picker 但这不起作用(我尝试了大约 10 小时 - 几乎所有东西)所以我切换到 filesystem_picker。 按下按钮时,出现以下错误:

[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: Navigator operation requested with a context that does not include a Navigator.
The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget.
#0      Navigator.of.<anonymous closure> (package:flutter/src/widgets/navigator.dart:2553:9)
#1      Navigator.of (package:flutter/src/widgets/navigator.dart:2560:6)
#2      FilesystemPicker.open (package:filesystem_picker/src/picker_page.dart:58:22)
#3      _App._pickAFile (package:projekt/main.dart:26:41)
#4      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:989:21)
#5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:198:24)
#6      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:608:11)
#7      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296:5)
#8      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:230:7)
#9      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:563:9)
#10     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:94:12)
#11     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:139:9)
#12     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:539:8)
#13     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:137:18)
#14     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:123:7)
#15     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:439:19)
#16     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:419:22)
#17     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:322:11)
#18     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:374:7)
#19     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:338:5)
#20     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:296:7)
#21     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:279:7)
#22     _rootRunUnary (dart:async/zone.dart:1444:13)
#23     _CustomZone.runUnary (dart:async/zone.dart:1335:19)
#24     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1244:7)
#25     _invoke1 (dart:ui/hooks.dart:169:10)
#26     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:293:7)
#27     _dispatchPointerDataPacket (dart:ui/hooks.dart:88:31)

该代码是:

mport 'dart:io';
import 'package:filesystem_picker/filesystem_picker.dart';

import 'package:flutter/material.dart';

main () => runApp(App());

class App extends StatefulWidget{
  @override
  State<StatefulWidget> createState(){
    return _App();
  }
}

class _App extends State<App>{
  Directory rootPath = new Directory('/');

  String? filePath;
  String? dirPath;

  //FileTileSelectMode filePickerSelectMode = FileTileSelectMode.checkButton;

void _pickAFile() async{

  String? path = await FilesystemPicker.open(
  
  title: 'Open file',
  context: context,
  rootDirectory: rootPath,
  fsType: FilesystemType.file,
  folderIconColor: Colors.teal,
  allowedExtensions: ['.pdf'],
  fileTileSelectMode: FileTileSelectMode.wholeTile,
);

}

  Widget build(BuildContext context){
    return MaterialApp(
      home: Scaffold(
       appBar: AppBar(title: Text("FilePickerApp"),
       ),
       body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            newPadding(),

          ],
        ),
       ))
       );
  }

Padding newPadding() {
    // ignore: unnecessary_new
    return new Padding(
      padding: const EdgeInsets.only(top: 50.0, bottom: 20.0),
        child: ElevatedButton(
          onPressed:_pickAFile,
          // ignore: prefer_const_constructors
          child: Text("Open File picker"),
                ),
              );
  }

}

我应该怎么解决这个问题? 或者有可能修复它吗?

试试这个,也许它可以帮助

main () => runApp(
MaterialApp(App()),

);

并且不要在这里返回填充。 也许是这样

newPadding() {
   return   Padding(
      padding: const EdgeInsets.only(top: 50.0, bottom: 20.0),
        child: ElevatedButton(
          onPressed:_pickAFile,
          
          child: const Text("Open File picker"),
                ),
              );
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM