我应该将此生成的文件添加到我的文件中,.gitignore以便它不会显示在我的存储库中吗?
应该pubspec.lock包含在我的存储库中?
我想创建一个文件,说foo/bar/baz/bleh.html,但没有目录foo,foo/bar/等等存在.
如何创建我的文件以递归方式创建所有目录?
在制作包时,我经常对是否应该使用any约束感到困惑.
我知道这个:
库包,我应该指定明确的版本约束,以便我的库的用户知道我的传递依赖的版本,
应用程序包,我应该使用any并检查我的pubspec.lock锁文件,以便其他人可以运行我的应用程序,
但是有一个灰色区域:
要扩展的应用程序,例如codelabs,教程,模板,示例等.
同样具有可重用库的应用程序 ; 也就是说,包含具有lib通用功能目录的包,这些目录在放入单独的包中是没有意义的,但也是web完整应用程序的目录.
问题:我应该何时使用any版本约束,何时应该完全指定Pub包的版本约束?
如果我写下面的Dart代码,我怎么知道哪个点击处理程序首先发生?
main() {
var button = new ButtonElement();
var stream = button.onClick.asBroadcastStream();
stream.listen(clickHandler1);
stream.listen(clickHandler2);
}
Run Code Online (Sandbox Code Playgroud)
假设我在其他代码中对前两个点击处理程序一无所知,但我注册了另一个.
button.onClick.asBroadcastStream()在其他地方再次写入,它是否指向与使用的相同的流main?我想知道我是否可以使用地图调用具有名称参数的函数,例如
void main()
{
Map a = {'m':'done'}; // Map with EXACTLY the same keys as slave named param.
slave(a);
}
void slave({String m:'not done'}) //Here I should have some type control
{
print(m); //should print done
}
Run Code Online (Sandbox Code Playgroud)
这里的黑客不是使用kwargs而是使用Map,或者,如果你关心类型,那么一些接口类(就像Json-obj一样),但只是让它接受map为kwars会不会更优雅?更多,使用这个hack,可选的kwargs可能会变成一种痛苦...恕我直言可能的实现,如果它还不存在,将是这样的:
slave(kwargs = a)
Run Code Online (Sandbox Code Playgroud)
例如,接受命名param的每个函数都可以默默地接受(Map)kwargs(或其他名称)参数,如果定义dart应该在引擎盖下处理这个逻辑:如果Map中的键完全是非可选的,加上{}括号中定义的一些可选项,以及兼容类型"继续".
根据Package布局约定,该web文件夹应包含以下内容:
HTML,CSS,图像,甚至可能是一些JavaScript.所有这些都进入了你的包的web目录.您可以自由地将内容组织到您的内心.如果让你开心的话,对子目录发疯吧.
所以我的web目录看起来像这样:
web/data_access
web/model
web/ui
web/ui/navigation
etc.
Run Code Online (Sandbox Code Playgroud)
现在,如何管理所有这些import语句.我得到了很多声明:
import '../../model/my_model.dart';
import '../../data_access/mock_dao.dart';
etc.
Run Code Online (Sandbox Code Playgroud)
我不喜欢../在我的导入中使用那么多,因为这很脆弱,每当我更改文件夹结构中的任何内容时,我都会遇到问题.
有没有更好的方法来组织web文件夹中的代码?
要么
还有其他方法可以进口吗?
我希望正常模式命令 tilde\xc2\xa0 ~,除了更改字母的大小写之外,还能够将文本\xc2\xa0 更改==为\xc2\xa0!=和\xc2\xa0更改!=为\xc2\xa0 ==。
我发现我经常这样做,并且我想要一个仍然使用波浪号的快捷方式。
\n如果我有以下代码:
Future<int> a = new Future(() { print('a'); return 1; });
Future<int> b = new Future.error('Error!');
Future<int> c = new Future(() { print('c'); return 3; });
Future.wait([a, b, c])
.then((List<int> values) => print(values))
.catchError((e) => print(e));
Run Code Online (Sandbox Code Playgroud)
什么印刷?
陷入错误的是否catchError知道Future死了什么?或者哪个期货仍然存在?
我已经阅读了很多关于此的帖子和文章(异步和期货),我不确定目前的情况如何.我尝试了许多不同的变化.
我按顺序尝试以下代码:
import 'dart:async' as async;
import 'dart:io';
import 'dart:math';
import 'package:postgresql/postgresql.dart' as pg;
var uri = 'postgres://admin:admin@localhost:5432/testdb';
List lgNames = ['Peter', 'Robert', 'Mary', 'Marg', 'William',
'Vern', 'Dermot', 'Monty', 'Peggy', 'Sue', 'William'];
List lgUsed = [];
Random rand1 = new Random();
void main() {
pg.connect(uri).then((oDb) {
print ("Connected to database");
fClearTable(oDb).then((String sResult){
print(sResult);
for (int iPos = 0; iPos < 3; iPos++) {
fListTable(oDb, "Select before Insert number ${iPos+1}").then((String sResult) =>
print(sResult));
fInsertData(oDb, "Insert Number ${iPos+1}").then((String sResult) =>
print(sResult));
fListTable(oDb, …Run Code Online (Sandbox Code Playgroud) 我使用下面的内容来查看 dart 如何调用传入其他方法的方法,以查看传入方法将/可以在什么上下文下调用。
void main() {
var one = new IDable(1);
var two = new IDable(2);
print('one ${caller(one.getMyId)}'); //one 1
print('two ${caller(two.getMyId)}'); //two 2
print('one ${callerJustForThree(one.getMyId)}'); //NoSuchMethod Exception
}
class IDable{
int id;
IDable(this.id);
int getMyId(){
return id;
}
}
caller(fn){
return fn();
}
callerJustForThree(fn){
var three = new IDable(3);
three.fn();
}
Run Code Online (Sandbox Code Playgroud)
那么 manager 如何在没有上下文的情况下caller调用其参数ie ,以及为什么无法调用为其定义了该函数的对象传递的参数?fnone.fn()callerJustForThreefn