做BuildContext什么,我们从中得到什么信息?
https://docs.flutter.io/flutter/widgets/BuildContext-class.html目前尚不清楚.
https://flutter.io/widgets-intro/#basic-widgets在该术语的第9个实例上BuildContext有一个例子,但目前尚不清楚它是如何被使用的.它是一组更大的代码丢失了我的一部分,所以我很难理解它是什么BuildContext.
有人可以用简单/非常基本的术语解释这个吗?
我在Dart中苦苦寻求getter和setter的概念,我读的越多,我就无法理解其根本目的.以下面的代码为例:
main() {
Car car = new Car();
car.doors = 44;
print(car.doors); // 44
}
class Car {
int doors = 4;
}
Run Code Online (Sandbox Code Playgroud)
后来,我决定将"门"变成一个私有变量,所以我做了以下几点:
main() {
Car car = new Car();
car.doors = 44;
print(car.doors); // 44
}
class Car {
int _doors = 4;
int get doors => _doors;
set doors(int numberOfDoors) => _doors = numberOfDoors;
}
Run Code Online (Sandbox Code Playgroud)
根据代码,_doors现在是一个私有变量,因此我无法在main()中访问它.然而,通过操纵doors,我可以_doors通过使其成为私有变量来间接地改变我认为我想要首先防止的值.那么,如果您仍然可以间接操纵它,那么将以前的公共变量变为私有变量的目的是什么?而且,getter和setter如何改变这些变量的属性呢?我试图理解基本概念,因为没有它,我不明白如何或为什么使用getter和setter.
在Dart中使用库时,我并不完全理解part/ part of和import/ 之间的区别export.例如:
one.dart:
library one;
part "two.dart";
Class One {
};
Run Code Online (Sandbox Code Playgroud)
和
two.dart:
part of one;
import 'somefile.dart';
Class Two {
}
Run Code Online (Sandbox Code Playgroud)
与
library one;
import 'two.dart';
Class One {
}
Run Code Online (Sandbox Code Playgroud)
和
library two;
import 'somefile.dart';
export 'somefile.dart';
Class Two {
}
Run Code Online (Sandbox Code Playgroud)
两种情况似乎都做同样的事情.什么时候最好使用part和part of,而不是import?以及是否有场景中import是行不通的,但part并part of不会?
我需要在变量之前在Dart中打印一个美元符号.例如:
void main()
{
int dollars=42;
print("I have $dollars."); // I have 42.
}
Run Code Online (Sandbox Code Playgroud)
我希望输出为:我有42美元.我怎样才能做到这一点?谢谢.
我似乎无法简单地将硬盘中的图像加载到屏幕上.Image.net工作似乎很简单.但我无法弄清楚如何使用Image或Image.file.图像似乎需要一个流,所以我认为这不是我想要的.
import 'package:flutter/material.dart';
import 'dart:io';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
File file = new File("Someimage.jpeg");
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Image.file(file), //doesn't work, but no errors
);
}
}
Run Code Online (Sandbox Code Playgroud)
我将someimage添加到pubspec.yaml文件中,但这也不起作用:
assets:
- Someimage.jpeg
Run Code Online (Sandbox Code Playgroud)
有人能给我一个如何做到这一点的例子吗?谢谢.
我正在尝试创建一个Web服务器流.这是代码:
import 'dart:io';
main() async {
HttpServer requestServer = await HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 8000);
requestServer.listen((request) { //comment out this or the await for to work
request.response
..write("This is a listen stream")
..close();
});
await for (HttpRequest request in requestServer) {
request.response
..write("This is an await for stream")
..close();
}
}
Run Code Online (Sandbox Code Playgroud)
listen和await之间有什么区别?它们都不能同时工作.你需要注释掉一个或另一个才能工作,但这里的功能似乎没有区别.是否存在差异的情况,何时应该使用另一个?
我正在尝试将一系列字符串写入文件 Letters.txt。
import "dart:io";
main() {
List letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"];
File file = new File("Letters.txt");
for (int i = 0; i < 10; i++) {
file.writeAsString("${letters[i]}", mode: FileMode.APPEND);
}
}
Run Code Online (Sandbox Code Playgroud)
打开文件时Letters.txt,它应该显示“abcdefghij”,而是显示“j”。关于我做错了什么的任何想法?我试过FileMode: WRITE, WRITE_ONLY_APPEND, 和WRITE_ONLY,但这些都没有奏效。
我很难理解Flutter中的元素是什么。在文档中:“在树中特定位置的窗口小部件的实例化”。。。。我想现在我要问,树是什么。
起初,我以为树是指小部件的状态,但是StatelessWidget也有createElement,所以情况似乎并非如此。然后,我以为树指的是父母/孩子的关系,但我不清楚。最后,听起来像元素在那个特定的时间和位置有点像小部件的快照,但是相关的方法似乎并不能反映这一点。我在附近吗?
import "dart:async";
import "dart:html";
void main() async {
InputElement addStream = querySelector("#addstream");
Stream<int> aStream = _someStream();
StreamController<int> sc = StreamController();
sc.stream.listen((e) => print(e));
addStream.onClick.listen((e) {
sc.sink.addStream(aStream); // streamcontroller brings in stream through the sink
// aStream.pipe(sc); // stream going into streamcontroller through the sink
});
}
Run Code Online (Sandbox Code Playgroud)
上面的代码中,sc.sink.addStream(aStream)好像是用sink方法添加aStream到StreamControllersc。在此之下,aStream用于pipe添加到StreamController sc.
这两种方法似乎都在做同样的事情。在我看来,使用一种方法而不是另一种方法就是一种风格。如果您使用的是Stream,pipe则将其添加到StreamController. 如果您正在使用 a StreamController,请将 a下沉Stream到它。使用一个与另一个有什么特殊的理由吗?