Flutter 包问题:运行“flutter run”时“找不到目标文件”

问题描述 投票:0回答:1

我正在开发一个 Flutter 包,旨在在后台创建一个信使聊天头。包结构如下:

Flutter_Head/
|-- lib/
|   |-- flutter_head.dart
|-- test/
|   |-- flutter_head_test.dart
|-- pubspec.yaml
|-- README.md
  • 颤振版本:1.13.6.8
  • Dart 版本:2.3.2

我在尝试使用 flutter run 命令运行 Flutter 包时遇到问题。我收到的错误消息是:

未找到目标文件“lib/main.dart”。

代码示例:

lib/flutter_head.dart

// lib/flutter_head.dart
import 'package:flutter/material.dart';

class FlutterHead extends StatefulWidget {
  const FlutterHead({super.key});

  @override
  _FlutterHeadState createState() => _FlutterHeadState();
}

class _FlutterHeadState extends State<FlutterHead> {
  bool _isChatHeadVisible = true; // Track chat head visibility

  final _appLifecycleObserver = AppLifecycleObserver();

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(_appLifecycleObserver);
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(_appLifecycleObserver);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return _isChatHeadVisible
        ? Positioned(
            bottom: 16.0,
            right: 16.0,
            child: GestureDetector(
              onTap: _handleTap,
              child: Container(
                width: 56.0,
                height: 56.0,
                decoration: const BoxDecoration(
                  color: Colors.blue,
                  shape: BoxShape.circle,
                ),
                child: const Icon(
                  Icons.message,
                  color: Colors.white,
                ),
              ),
            ),
          )
        : Container(); // Return an empty container if chat head is not visible
  }

  void _handleTap() {
    _minimizeApp();
  }

  void _minimizeApp() {
    setState(() {
      _isChatHeadVisible = false; // Hide the chat head
    });
    Navigator.pop(context);
  }

  void didChangeAppLifecycleState(AppLifecycleState state) {
    if (state == AppLifecycleState.resumed) {
      // App is in the foreground
      // Show the chat head
      _showChatHead();
    } else if (state == AppLifecycleState.paused) {
      // App is in the background
      // Hide the chat head
      _hideChatHead();
    }
  }

  void _showChatHead() {
    setState(() {
      _isChatHeadVisible = true; // Show the chat head
    });
  }

  void _hideChatHead() {
    setState(() {
      _isChatHeadVisible = false; // Hide the chat head
    });
  }
}

class AppLifecycleObserver extends WidgetsBindingObserver {
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
  }
}

测试/flutter_head_test.dart

import 'package:flutter_head/flutter_head.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets('FlutterHead should be visible', (WidgetTester tester) async {
    // Build our widget and trigger a frame.
    await tester.pumpWidget(const FlutterHead());

    // Verify that the chat head is initially visible.
    expect(find.byType(FlutterHead), findsOneWidget);
  });

  testWidgets('Tapping on FlutterHead should minimize the app',
      (WidgetTester tester) async {
    // Build our widget and trigger a frame.
    await tester.pumpWidget(const FlutterHead());

    // Tap on the chat head.
    await tester.tap(find.byType(FlutterHead));
    await tester.pump();

    // Verify that the app is minimized (chat head is no longer visible).
    expect(find.byType(FlutterHead), findsNothing);
  });
}

示例/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_head/flutter_head.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter Head Example'),
        ),
        body: const Center(
          child: FlutterHead(),
        ),
      ),
    );
  }
}

错误信息

如何解决flutter run运行时出现“目标文件未找到”的问题?如有具体配置或步骤需要注意,请提供详细说明。

android flutter dart mobile package
1个回答
0
投票

如果您从父文件夹 (

flutter run
) 执行
Flutter_Head
,请明确指定目标路径:

flutter run -t example/lib/main.dart

关于

-t
标志:

-t, --target= 应用程序的主入口点文件,在设备上运行。 如果省略“--target”选项,但在命令行上提供了文件名,则使用该文件名。 (默认为“lib\main.dart”)

© www.soinside.com 2019 - 2024. All rights reserved.