为啥颤振无法导入我的模型?
Posted
技术标签:
【中文标题】为啥颤振无法导入我的模型?【英文标题】:Why does flutter fail importing my model?为什么颤振无法导入我的模型? 【发布时间】:2021-03-21 20:58:32 【问题描述】:早上好,
我一直在尝试将模型名称事务导入我的小部件文件。
即使路径正确,我也会收到此错误消息
Xcode 的输出: ↳ lib/widgets//user_transactions.dart:5:8:错误:读取“lib/widgets/models/transaction.dart”时出错:没有这样的文件或目录 导入'../models/transaction.dart'; ^ lib/widgets//transaction_list.dart:4:8:错误:读取“lib/widgets/models/transaction.dart”时出错:没有这样的文件或目录 导入'../models/transaction.dart'; ^ lib/widgets//user_transactions.dart:13:14:错误:找不到类型“事务”。 最终列表_userTransactions = [ ^^^^^^^^^^^^ lib/widgets//transaction_list.dart:7:14:错误:找不到类型“事务”。 最终清单交易; ^^^^^^^^^^^^ lib/widgets//user_transactions.dart:13:14:错误:“事务”不是一种类型。 最终列表_userTransactions = [ ^^^^^^^^^^^^ lib/widgets//user_transactions.dart:14:5:错误:找不到方法:“事务”。 交易( ^^^^^^^^^^^^ lib/widgets//user_transactions.dart:20:5:错误:找不到方法:“事务”。 交易( ^^^^^^^^^^^^ lib/widgets//user_transactions.dart:29:19:错误:没有为类“_UserTransactionsState”定义方法“Transaction”。 - '_UserTransactionsState' 来自'package:expenses_app/widgets//user_transactions.dart' ('lib/widgets//user_transactions.dart')。 尝试将名称更正为现有方法的名称,或定义名为“Transaction”的方法。 最终 newTx = 交易( ^^^^^^^^^^^^ lib/widgets//transaction_list.dart:7:14:错误:“事务”不是一种类型。 最终清单交易; ^^^^^^^^^^^^ lib/widgets//transaction_list.dart:31:27:错误:没有为“对象”类定义获取器“数量”。 - “对象”来自“飞镖:核心”。 尝试将名称更正为现有 getter 的名称,或者定义一个名为“amount”的 getter 或字段。 '$$tx.amount', ^^^^^^ lib/widgets//transaction_list.dart:43:24:错误:没有为类“对象”定义吸气剂“标题”。 - “对象”来自“飞镖:核心”。 尝试将名称更正为现有 getter 的名称,或定义一个名为“title”的 getter 或字段。 tx.title, ^^^^^ lib/widgets//transaction_list.dart:50:50:错误:没有为“对象”类定义吸气剂“日期”。 - “对象”来自“飞镖:核心”。 尝试将名称更正为现有 getter 的名称,或定义一个名为“date”的 getter 或字段。 DateFormat.yMMMd().format(tx.date),
路径是 models/transaction.dart ,但是读取“lib/widgets/models/transaction.dart”时出现消息错误让我认为我在导入时做错了。
请在下面找到我的文件截图,然后是我的 2 个文件的代码:
models/transaction.dart
import 'package:flutter/foundation.dart';
class Transaction
final String id;
final String title;
final double amount;
final DateTime date;
Transaction(
@required this.id,
@required this.title,
@required this.amount,
@required this.date,
);
小部件/transaction_list.dart
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import '../models/transaction.dart';
class TransactionList extends StatelessWidget
final List<Transaction> transactions;
TransactionList(this.transactions);
@override
Widget build(BuildContext context)
return Column(
children: transactions.map((tx)
return Card(
child: Row(
children: <Widget>[
Container(
margin: EdgeInsets.symmetric(
vertical: 10,
horizontal: 15,
),
decoration: BoxDecoration(
border: Border.all(
color: Colors.purple,
width: 2,
),
),
padding: EdgeInsets.all(10),
child: Text(
'\$$tx.amount',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 20,
color: Colors.purple,
),
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
tx.title,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
),
),
Text(
DateFormat.yMMMd().format(tx.date),
style: TextStyle(
color: Colors.grey,
),
),
],
),
],
),
);
).toList(),
);
看起来模型/transaction.dart 的 2 次导入失败,但我不知道为什么....
感谢您的帮助
【问题讨论】:
【参考方案1】:没有文件import '../models/transaction.dart';
widgets/models/
中有三个文件
new_transaction.dart
transaction_list.dart
user_transactions.dart
您需要更改相关文件的名称或更改导入以匹配其中一个文件名。
例如import '../models/new_transaction.dart';
【讨论】:
【参考方案2】: 在lib
下创建一个src
文件夹
将模型和小部件文件夹移动到src
将main.dart
留在lib
运行应用程序
【讨论】:
以上是关于为啥颤振无法导入我的模型?的主要内容,如果未能解决你的问题,请参考以下文章