我正在尝试将抽屉与主体一起用作ListView,但是当我尝试单击抽屉图标时,它给出了我的错误,所以我认为抽屉高度有问题,所以我用高度的大小框包裹了抽屉小部件但什么都没有改变
我尝试用尺寸框包裹列表视图并给它固定的高度,但没有任何改变
那么有什么办法可以解决这个问题吗
这是包的代码
import 'package:flutter/material.dart';
import 'package:sakani/constants.dart';
import 'package:sakani/models/picture_cat_model.dart';
import 'package:sakani/widgets/custom_drawer.dart';
import '../widgets/image_cards_builder.dart';
class PrevieView extends StatelessWidget {
const PrevieView({
super.key,
required this.image,
});
static String id = 'Previeview';
final PicCat image;
@override
Widget build(BuildContext context) {
final List<String> type = image.type.split(',');
return Scaffold(
appBar: AppBar(
centerTitle: true,
title: Text(type.first),
elevation: 0,
foregroundColor: Colors.black,
backgroundColor: Colors.transparent,
),
drawer: const CustomDrawer(),
body: Padding(
padding: const EdgeInsets.all(5),
child:ListView(
children: [
SizedBox(
child: Stack(
children: [
SizedBox(
width: double.infinity,
child: ClipRRect(
borderRadius: BorderRadius.circular(kPrimaryPadding),
child: Image.network(
image.image,
),
),
),
Positioned(
child: IconButton(
onPressed: () {},
icon: const ImageIcon(
AssetImage("assets/icons/dots.png")),
color: Colors.white,
))
],
),
),
Padding(
padding: const EdgeInsets.only(
left: 10,
),
child: Row(
children: [
const Expanded(
child: Text(
"more similar photos",
style: TextStyle(
fontSize: 20,
color: Colors.black,
),
),
),
IconButton(
onPressed: () {},
icon: Icon(
Icons.favorite,
color: Colors.red[700],
))
],
),
),
ImagesBuilder(type: type.first),
],
),
));
}
}
这是抽屉密码
import 'package:flutter/material.dart';
import 'package:sakani/constants.dart';
import '../views/general_page.dart';
class CustomDrawer extends StatelessWidget {
const CustomDrawer({super.key});
@override
Widget build(BuildContext context) {
return Drawer(
width: 200,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
DrawerHeader(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.end,
children: [
const Spacer(
flex: 100,
),
const Padding(
padding: EdgeInsets.only(top: 60),
child: Text(
kPrimaryAppName,
style: TextStyle(fontSize: 30),
),
),
const Spacer(),
IconButton(onPressed: () {}, icon: const Icon(Icons.light_mode)),
],
)),
GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: const ListTile(
title: Text("General"),
),
),
GestureDetector(
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return const GeneralView(
type: "nature",
);
}));
},
),
],
),
);
}
}'
因为您已在 DrawerHeader 中添加了 Spacer(),请删除此间隔符并使用 SizedBox(width: "your value") 代替。
切勿在不使用 Expanded 的情况下在行/列中使用 Spacer()
DrawerHeader(
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.end,
children: [
const Spacer( //remove this
flex: 100,
),
const Padding(
padding: EdgeInsets.only(top: 60),
child: Text(
kPrimaryAppName,
style: TextStyle(fontSize: 30),
),
),
const Spacer(), //remove this
IconButton(onPressed: () {}, icon: const Icon(Icons.light_mode)),
],
))