我的 flutter 项目依赖于几个本地 flutter 和 dart 包来保持分离和干净。\n我的文件夹结构如下:
\nmain-flutter-project\n\xe2\x94\x82 lib\n| test\n\xe2\x94\x82 pubspec.yaml\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 local-packages\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dart-package-1\n\xe2\x94\x82 \xe2\x94\x82 pubspec.yaml\n\xe2\x94\x82 \xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 flutter-package-1\n\xe2\x94\x82 \xe2\x94\x82 pubspec.yaml\n\xe2\x94\x82 \xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 flutter-package-2\n\xe2\x94\x82 pubspec.yaml\n...\n
Run Code Online (Sandbox Code Playgroud)\n每个本地包都是独立的,可以在不接触主项目的情况下进行维护。
\n这种结构意味着我有很多pubspec.yaml
文件,我必须在其中保持依赖项的更新。\n当我在 5 个包中使用 libaray 时bloc
,当新版本发布时,bloc: ^7.2.1
我必须分别更新每个文件中的版本。pubspec
是否可以仅在其他pubspec.yaml
文件引用的一个位置指定这些共享包依赖项版本?
我已经在 Maven 中看到了这一点,您可以在其中指定一个属性<junit.version>4.12</junit.version>
并从其他地方访问它<version>${junit.version}</version>
。
我是新手,有个问题对专业人士来说应该不难回答。
我有一个5列10行的简单电子表格。现在,我有两个变量,分别代表列索引和行索引。
我只想从电子表格中读取相应的值,具体取决于所需的列和行号。
颤动可能吗?Flutter可以读取电子表格(例如.csv)并以某种方式获取信息吗?
我期待着一个答案,谢谢!
编辑:这是我到目前为止的代码,最初来自https://flutter.io/cookbook/persistence/reading-writing-files/。它打印
I / flutter(18817):“未来”的实例
但我不知道如何访问数据。
Future<String> readTable() async {
try {
final file = File("assets/res/table.txt");
// Read the file
String contents = await file.readAsString();
print(contents);
return contents;
} catch (e) {
// If we encounter an error, return 0
return "";
}
}
Run Code Online (Sandbox Code Playgroud) 我想将数据传递给有状态的小部件,更改小部件内的数据并在原始位置更新它。
我想避免使用全局变量,我想知道是否可以通过引用将变量传递给有状态小部件。
下面是一些示例代码,其中将数据传递给小部件。如果我使用滑块,计数器只会在小部件内部更新,而不是在主布局树中。
我很感激任何帮助。
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() { …
Run Code Online (Sandbox Code Playgroud) 我编写了一个 dart 包,我的 flutter 应用程序正在使用它。在 dart 包内,我想将一些静态数据存储在 json 文件中,我想从 dart 包代码中读取这些数据。
但是我找不到直接从 dart 包访问资源文件的方法。使用File(path).readAsString()
only 适用于 dart 控制台应用程序,使用rootBundle
only 适用于 flutter 包/应用程序。
我的问题是:如何直接从纯 dart 包访问存储在 dart 包资产中的这个文件?
在 flutter 包中,我只需通过 pubspec.yml 使文件可用,如下所示
flutter:
assets:
- lib/assets/b737.json
Run Code Online (Sandbox Code Playgroud)
但我找不到纯 dart 包的类似解决方案。
我有一个CustomPaint
画椭圆形的。
我想在特定位置切一个洞,但我还不知道它是如何工作的。
我试过:
canvas.drawPath(
Path.combine(PathOperation.difference, ovalPath, holePath),
ovalPaint,
);
Run Code Online (Sandbox Code Playgroud)
但这并没有解决问题,而是给了我以下结果:
这个椭圆形只是一个例子,“真正的”定制油漆会变得更加复杂,我需要的不仅仅是一个切口。所以只画几条线并不是一个替代方案。我想首先定义路径,然后应用切口(甚至反向剪切)来获得孔。
那可能吗?
这是我所拥有的完整工作示例:
import 'package:flutter/material.dart';
import 'dart:math';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: darkBlue,
),
debugShowCheckedModeBanner: false,
home: const Scaffold(
body: Center(
child: OvalCustomPaint(),
),
),
);
}
}
class OvalCustomPaint extends StatelessWidget {
const OvalCustomPaint({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) { …
Run Code Online (Sandbox Code Playgroud) 我知道Flutter对于ListViews有不同的方法:
列表显示
动画列表
ReorderableListView
但是还有可能组合所有不同的功能吗?
我需要一个ReorderableListView通过拖放来重新排序项目,同时能够添加和删除带有动画的项目。
我错过了什么吗?还是没有?数小时尝试的事情..
任何变通办法也表示赞赏。
我在我的 flutter 项目中使用auto_route包并将我的应用程序包装在MaterialApp.router
.
现在我想测试一个AutoRouter.of(context).pop();
在一个地方调用的小部件。
我的测试如下所示:
testWidgets('my widget test',
(WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
home: MyWidget(),
),
);
});
Run Code Online (Sandbox Code Playgroud)
可以理解的是,泵送小部件会抛出以下错误消息:
AutoRouter operation requested with a context that does not include an AutoRouter. The context used to retrieve the Router must be that of a widget that is a descendant of an AutoRouter widget.
所以我需要AutoRouter
在测试中在我的小部件上方提供一个实例。
我的小部件也使用了MediaQuery
,我需要将测试的小部件包装在里面MaterialApp
,以避免由于MediaQuery.of(context)
查找而引发的错误。
我想我需要做一些类似的事情AutoRouter
,但还没有弄清楚。有类似的东西吗MockAutoRouter
?
很高兴获得任何帮助。
在我的 flutter 应用程序中,用户选择一个时间,我需要简单地添加一些小时和分钟以显示结果。这很容易吗?不幸的是,似乎没有像 TimeOfDay.add() 这样的函数。
有任何想法吗?
谢谢!