#flutter
#flutter
Вопрос:
class Drawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: [
UserAccountsDrawerHeader(
accountName: Text("Anus"),
accountEmail: Text("Anus@gmail.com"),
currentAccountPicture: CircleAvatar(
backgroundImage: NetworkImage(
"https://images.unsplash.com/photo-1533227268428-f9ed0900fb3b?ixlib=rb-1.2.1amp;ixid=eyJhcHBfaWQiOjEyMDd9amp;auto=formatamp;fit=cropamp;w=1158amp;q=80"),
),
),
ListTile(
leading: Icon(Icons.person),
title: Text("Account"),
subtitle: Text("Personal"),
trailing: Icon(Icons.edit),
),
ListTile(
leading: Icon(Icons.email),
title: Text("Email"),
subtitle: Text("anus@gmail.com"),
trailing: Icon(Icons.send),
),
],
),
);
}
}
Как исправить эту проблему в flutter
Я хочу создать ящик, но когда я пытаюсь создать ящик в новом файле для ящика, именованный параметр ‘child’ не определен.
Ответ №1:
Вы использовали тот же виджет при определении этого виджета.
Вот рабочий код.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: _buildBody(),
floatingActionButton: FloatingActionButton(
onPressed: () {},
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
Widget _buildBody() {
return Drawer();
}
}
class Drawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView(
padding: EdgeInsets.zero,
children: [
UserAccountsDrawerHeader(
accountName: Text("Anus"),
accountEmail: Text("Anus@gmail.com"),
currentAccountPicture: CircleAvatar(
backgroundImage: NetworkImage(
"https://images.unsplash.com/photo-1533227268428-f9ed0900fb3b?ixlib=rb-1.2.1amp;ixid=eyJhcHBfaWQiOjEyMDd9amp;auto=formatamp;fit=cropamp;w=1158amp;q=80"),
),
),
ListTile(
leading: Icon(Icons.person),
title: Text("Account"),
subtitle: Text("Personal"),
trailing: Icon(Icons.edit),
),
ListTile(
leading: Icon(Icons.email),
title: Text("Email"),
subtitle: Text("anus@gmail.com"),
trailing: Icon(Icons.send),
),
],
);
}
}
Ответ №2:
ваша проблема связана с тем фактом, что вы использовали имя Drawer для класса (вашего пользовательского виджета), что означает, что компилятор не будет знать, какой виджет Drawer использовать, либо Drawer из библиотеки материалов, либо Drawer, который вы только что определили.
чтобы устранить эту проблему, просто измените имя класса на AppDrawer или любое другое имя, и компилятор начнет распознавать, что вы пытаетесь использовать ящик, определенный в библиотеке материалов.