【问题标题】:How to print a Class's file path?如何打印类的文件路径?
【发布时间】:2022-11-28 19:08:00
【问题描述】:

我想打印这个类的文件路径,这样我就可以很快找到这个类。

就像有时系统做的那样:

我可以单击这个蓝色链接并跳转到它的类。

我在课堂上可以做什么?

这种方法像:

printPath(this.runtimeType);

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    编辑:这不是你问题的答案,但它可以帮助你找到你的实现。实际上,您应该使用 IDE 来定位您的类。

    那是堆栈跟踪。您可以通过抛出错误来获取堆栈跟踪。 只需将 try-catch 子句放在代码中的任何位置,如下所示:

    try {
      throw Error();
    } catch (e, stackTrace) {
      print(stackTrace);
    }
    

    您可以通过编写扩展名来改进它:

    extension StackTracer on Object {
      StackTrace get stackTrace {
        try {
          throw Error();
        } catch (e, stackTrace) {
          return stackTrace;
        }
      }
    }
    

    您可以通过导入扩展来获取它,然后像这样打印它:

    import 'package:flutter/material.dart';
    
    import 'path_to_your_extension.dart'; // path to your extension
    
    class CrashButton extends StatelessWidget {
      const CrashButton({super.key});
    
      @override
      Widget build(BuildContext context) {
        print(stackTrace);
        return Text('Widget');
      }
    }
    

    但在这种情况下,您将获得扩展的路径作为第一条路径

    【讨论】:

      【解决方案2】:

      添加这个包:

       stack_trace: ^1.11.0
      

      例子:

      import 'dart:async';
      
      void main() {
        _scheduleAsync();
      }
      
      void _scheduleAsync() {
        Future.delayed(Duration(seconds: 1)).then((_) => _runAsync());
      }
      
      void _runAsync() {
        throw 'oh no!';
      }
      

      Unhandled exception:
      oh no!
      #0      _runAsync (file:///Users/kevmoo/github/stack_trace/example/example.dart:12:3)
      #1      _scheduleAsync.<anonymous closure> (file:///Users/kevmoo/github/stack_trace/example/example.dart:8:52)
      <asynchronous suspension>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-24
        • 2014-10-25
        • 1970-01-01
        相关资源
        最近更新 更多