飞镖中的“ <Widget> [〜]”是什么意思?带列表括号的箭头括号(颤振)

时间:2020-03-24 11:43:55

标签: flutter dart syntax grammar

我是飞镖新手。

我正在通过阅读文档来研究颤动。

here

我看到了[等等]。

我知道通用(Cpp),但是我不知道它的含义。

你能跟我解释一下吗?

1 个答案:

答案 0 :(得分:0)

我也是 Dart 新手,在 DartPad 上玩。
似乎在 Set (i.e. Int, String)
a List {'hello', 'world'} 之前放置类型 ['hello', 'world'] 会使它像 "strict" 一样,使其类型安全. (ref:https://dart.dev/guides/language/type-system)

就像你做<String>['hello', 'world'] 列表中只接受字符串,
并且如果您执行 <String>[1,2,3] 会抛出错误。

因此,在 <Widget>[Column(), Rows()] 中,如果您将非小部件类或对象放入集合中,它将抛出一个错误,就像您这样做一样<Widget>['hello', 'world']

在 DartPad https://dartpad.dev/215ba63265350c02dfbd586dfd30b8c3?null_safety=true 上试试下面的代码。请注意,它会抛出错误,因为我在第 3 行的 Widget 类型 Set 上放置了一个字符串。

import 'package:flutter/material.dart';

void main() {
  
  print(<String>['Hello',' ', 'World']);
  
  print(<Widget>[Column(), 'hello']); //error will throw since it will only accept <Widget>
  
  print(<Widget>[Column(),Row()]);
  
}

此外,列表中的所有项目都是 Widgets 类,并且在那些 e.i. “height: 36.0”是widget的属性/方法,就像嵌套的Widget,Flutter里到处都是。

class MyButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        print('MyButton was tapped!');
      },
      child: Container( // Container is a widget, child is a GestureDetector props.
        height: 36.0, //height is a Container props
        padding: const EdgeInsets.all(8.0), // EdgeInsets also a widget
        margin: const EdgeInsets.symmetric(horizontal: 8.0),
        decoration: BoxDecoration( // BoxDecoration also a widget
          borderRadius: BorderRadius.circular(5.0),
          color: Colors.lightGreen[500],
        ),
        child: Center(
          child: Text('Engage'),
        ),
      ),
    );
  }
}