我不想使用像 momentjs 这样的任何外部库,我想自己创建一个格式化的日期字符串。我尝试使用new Date().toISOString(),但它正在丢失时区。
这:
new Date()
Run Code Online (Sandbox Code Playgroud)
给出:
Sat Jun 24 2017 09:32:10 GMT+0300 (RTZ 2 (winter))
和:
new Date().toISOString();
Run Code Online (Sandbox Code Playgroud)
给出:
2017-06-24T06:32:22.990Z
并且09:32:10是正确的时间,因此06:32:22丢失了时区信息。
除此之外,它看起来new Date().toLocaleString()几乎满足了我的需要。最后几个小时是正确的。结果:"24.06.2017, 11:37:05"。
我想完成get对服务器的请求,以便在我的应用程序启动时获取数据。我阅读了几个描述构建小部件后如何运行方法的主题。但它们都是描述provider不使用时的情况。而且我不确定在小部件中执行此请求是否是个好主意。
我尝试了几种方法,但没有成功。这是我的代码:
void main() async {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: ChangeNotifierProvider<TenderApiData>(
builder: (_) => TenderApiData(), child: HomePage()),
);
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(appBar: AppBar(), body: MainContainer());
}
}
class TenderApiData with ChangeNotifier {
String access_token;
List<Map<String, String>> id_names;
String access_token_url = "https://...";
getApiKey() async { // I need to call this method at app start …Run Code Online (Sandbox Code Playgroud) 我有以下应用程序:
class MyAppState extends State<MyApp>
{
TenderApiProvider _tenderApiProvider = TenderApiProvider();
Future init() async {
await _tenderApiProvider.getToken();
}
MyAppState()
{
init();
}
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(builder: (_) => _tenderApiProvider),
],
child: MaterialApp(
title: "My App",
routes: {
'/': (context) => HomePage(),
'/splash-screen': (context) => SplashScreen(),
'/result_table': (context) => ResultDataTable(),
}
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要SplashScreen在开始时首先绘制当前代码显示HomePage。
在启动画面中,我需要在加载所有数据后切换到 HomePage。这是代码:
Widget build(BuildContext context) {
TenderApiProvider apiProv = Provider.of<TenderApiProvider>(context);
return StreamBuilder(
stream: apiProv.resultController,
builder: (BuildContext …Run Code Online (Sandbox Code Playgroud) 我正在学习Dart/flutter并试图了解Widgets系统的工作原理.但我无法理解无状态小工具和有状态小工具之间的区别?比如我有按钮.它有什么类型?
让我们想象两个案例.我发送文本到按钮,然后显示它.我发送文本到按钮,它的颜色改变了.
如果我创建不合适的Widget类型会是什么?
我正在尝试扩展放置在 Row 中的文本小部件。但我收到错误。
代码:
class MainContainer extends StatelessWidget
{
@override
Widget build(BuildContext context)
{
return Column (
children: <Widget>[
Container(
),
Container(
child: Row(
children: <Widget>[
Row(
children: <Widget>[
Text("label1"),
Expanded(child: Text("label2")) // Problem is here
],)
],),
),
Container(
child: Row(children: <Widget>[
Text("Some Text")
],),
),
],
);
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
我/扑(5480):???通过渲染库捕获的异常 ????????????????????????????????????????????? ???????????? I/flutter (5480):在 performLayout() 期间抛出以下断言:I/flutter (5480):RenderFlex 子项具有非零 flex 但传入的宽度约束是无界的。I/flutter ( 5480) :当一行位于不提供有限宽度约束的父行中时,例如,如果它位于 I/flutter ( 5480) 中:水平滚动,它将尝试收缩包裹其子项水平轴。设置 I/flutter ( 5480): flex on a child (例如使用 Expanded) 表示子项要扩展以填充剩余的 …
我正在阅读有关对齐小部件的文档,但无法弄清楚高度\宽度因素是如何工作的?
如果非空,则将其高度设置为孩子的高度乘以该因子
我预计按钮的大小将乘以高度\宽度系数。我尝试明确指定它的大小,但没有成功。
这是我的代码:
@override
Widget build(BuildContext context) {
double _deviceWidth = MediaQuery.of(context).size.width;
return Container(
child: Center(
child: SizedBox(
height: 280,
width: 280,
child: Align(
heightFactor: 8,
child: RaisedButton(
child: Text(
"Hello",
style: TextStyle(fontSize: 18),
),
onPressed: () => {},
))),
// child: Text("Hello"),
),
);
}
Run Code Online (Sandbox Code Playgroud) 我需要检查变量rasters_previews_list是否有变化.这是我的代码:
var userContent = Vue.extend({
template: '<p>Some template</p>',
data: function () {
return {
rasters_previews_list: []
}
},
watch: {
'rasters_previews_list': function(value, mutation) {
console.log("Value changed");
}
}
});
Run Code Online (Sandbox Code Playgroud)
但在控制台中,我没有看到Value changed它何时获得新数据.
数据更改功能:
map.on('draw:created', function (e) {
//...
Vue.http.post('/dbdata', DataBody).then((response) => {
userContent.rasters_previews_list = response; // putting JSON answer to Component data in userContent
console.log(response);
}, (response) => {
console.log("Can't get list rasters metadata from DB. Server error: ", response.status)
});
Run Code Online (Sandbox Code Playgroud)
我改变了map.on('draw:created', function (e)(Leaflet JS)中的值.我看到console.log输出,所以数据似乎在变化.
Go 文档说:
当协程阻塞时,例如通过调用阻塞系统调用,运行时会自动将同一操作系统线程上的其他协程移动到不同的可运行线程,这样它们就不会被阻塞
但是运行时如何检测 goroutine 被阻塞呢?
例如,如果我将在 go-routine 之一中运行计算,它会被评估为阻塞操作吗?
package main
import (
"fmt"
"runtime"
)
func f(from string, score int) {
for i := 0; i < score; i++ {
for z := 0; z < score; z++ {
}
}
fmt.Println(from, " Done")
}
func main() {
runtime.GOMAXPROCS(1)
f("direct", 300000)
go f("foo", 200000)
go f("bar", 20000)
go f("baz", 2000)
go func(msg string) {
fmt.Println(msg)
}("going without loop")
var input string
fmt.Scanln(&input)
fmt.Println("done")
}
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:baz,boo bar。但为什么?Go 知道这foo是阻塞吗?
我正在尝试使用readText函数:
import std.stdio;
import std.file;
string xmlName = r"D:\files\123.xml";
File file;
void main()
{
writeln("Edit source/app.d to start your project.");
file = File(xmlName, "r");
string file_text = file.readText;
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Error: template std.file.readText cannot deduce function from argument types !()(File), candidates are:
C:\D\dmd2\windows\bin\..\..\src\phobos\std\file.d(499,3): std.file.readText(S = string, R)(auto ref R name) if (isSomeString!S && (isInputRange!R && !isInfinite!R && isSomeChar!(ElementType!R) || is(StringTypeOf!R)))
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
只是有趣的是为什么是名字lib。入口点是main.dart,所以在 lib 文件夹中看到有点奇怪main.dart。