#android #flutter #dart
Вопрос:
это та часть, которая меня смущает:
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Startup Name Generator',
actions: <Widget>[
IconButton(
icon: const Icon(Icons.shopping_cart),
tooltip: 'Open shopping cart',
onPressed: () {
// handle the press
},
),
],
home: RandomWords(),
);
}
}
Я следую руководству, предоставленному самим Google, но оно не работает:
https://codelabs.developers.google.com/codelabs/first-flutter-app-pt2
Я получаю эту ошибку:
The argument type 'List<Widget>' can't be assigned to the parameter type 'Map<Type, Action<Intent>>?'. dart(argument_type_not_assignable)
но в документах указано , что свойство actions равно a List<Widget>
, поэтому я понятия не имею, что я сделал не так
Ответ №1:
Вы работаете не с тем родительским виджетом. Это actions
MaterialApp
не то, что вы ищете.
Перейдите к своему RandomWords
виджету, убедитесь , что он создает Scaffold
, добавьте appBar
его в свой Scaffold
и установите actions
это AppBar
.
Ты хочешь чего-то подобного.
import 'package:flutter/material.dart';
class Test extends StatelessWidget {
const Test({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Test appbar'),
actions: [
IconButton(
icon: const Icon(Icons.shopping_cart),
tooltip: 'Open shopping cart',
onPressed: () {
// handle the press
},
),
],
),
);
}
}
Комментарии:
1. боже мой, я совершенно неправильно понял учебник… большое тебе спасибо, парень!
2. Не беспокойтесь, удачи и получайте удовольствие от обучения! Флаттер — такой отличный инструмент.