Спасибо за подробное объяснение @ Гюнтера, которое помогло мне в самом начале. Здесь я хотел бы немного объяснить фон этого вопроса, и особенно знаки препинания в качестве синтаксиса.
упомянутая строка кода:
MyHomepage({Key key, this.title}) : super(key: key);
должно исходить из автоматически сгенерированного шаблона приложения флаттера .
Полный контекст :
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
// This widget is the home page of your application. It is stateful, meaning
// that it has a State object (defined below) that contains fields that affect
// how it looks.
// This class is the configuration for the state. It holds the values (in this
// case the title) provided by the parent (in this case the App widget) and
// used by the build method of the State. Fields in a Widget subclass are
// always marked "final".
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
Для меня точечные знаки препинания (фигурные скобки { }
и два двоеточия :
) - вот что мешало мне понять его синтаксис.
Фигурные скобки из {Key key, this.title}
: это синтаксис объявления необязательных параметров при определении функции в Dart.
1-е двоеточие из MyHomepage(...) : super(key: key)
- это разделитель, который задает список инициализатора (super(key: key)
) функции конструктора MyHomepage(...)
2-е двоеточие в super(key: key)
- это способ, которым вы передаете параметр в названную функцию (super()
в данном случае).
- Например, функция
enableFlags
определяется следующим образом
void enableFlags({bool bold, bool hidden}) {...}
- Чтобы вызвать функцию, Dart передает параметр в функцию, объявив
parameterName
перед value
, отделенным двоеточием :
, что безопаснее для разработчика, чем Pythononic. Синтаксис аналога в swift должен быть внешний параметр.
enableFlags(bold: true, hidden: false);
Хотелось бы, чтобы это помогло.
Все определения и примеры можно найти в официальном документе Дарт