我将IconData作为Widget的参数传递,但我收到错误,指出类型‘Icon’不是类型Case中的类型‘IconData’的子类型. 我试了这么多问题,但都不能帮我改正错误.
我试过这个问题:
How to solve "IconData' is not a subtype of type 'Widget'"?
Category.dart个
import 'package:flutter/material.dart';
class Catgory extends StatelessWidget {
final String Txt;
const Catgory({super.key, required this.Txt});
@override
Widget build(BuildContext context) {
return Scaffold(
body: category_card(name: Txt),
);
}
}
double defaultRadius = 8.0;
class category_card extends StatefulWidget {
final String name;
const category_card({super.key, required this.name});
@override
State<category_card> createState() => _category_cardState();
}
class _category_cardState extends State<category_card> {
@override
Widget build(BuildContext context) {
return Directionality(
textDirection: TextDirection.rtl,
child: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
leading: IconButton(
icon: const Icon(Icons.arrow_back, color: MyColorsSample.primaryDark),
onPressed: () => Navigator.pop(context),
),
title: Text('طالع بینی ماه '+widget.name, style: const TextStyle(color: MyColorsSample.primaryDark),),
backgroundColor: Colors.white,
elevation: 0,
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(8),
scrollDirection: Axis.vertical,
child: Row(
children: [
Column(
children: [
Row(
children: [
// gradientCardSample("کلی", 12, context, IconData(Icon(Icons.ac_unit) as int)),
const SizedBox(width: 10,),
gradientCardSample("عشق", 12, context, const Icon(Icons.book, size: 20, color: Colors.blue,) as IconData),
]
//
),
]
),
],
),
),
),
);
}
}
Widget gradientCardSample(String title, int hint, BuildContext mcontext, IconData icon) {
return Builder(
builder: (context)=> InkWell(
splashColor: Colors.black.withAlpha(30),
onTap: () {
debugPrint('Card tapped.');
// Navigator.of(mcontext).push(MaterialPageRoute(builder: (mcontext) => const Catgory(Txt: "hi")));
},
child: Container(
height: 120,
width: 180,
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
gradient: const LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [ Color(0xFF846AFF), Color(0xFF755EE8), Colors.blueAccent,Colors.blue,],
),
borderRadius: radius(16)),
clipBehavior: Clip.hardEdge,
child: Row(
children: [
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 10,),
Text(title, style: const TextStyle(fontSize: 20, color: Colors.white, )),
],
),
//, style: boldTextStyle(color: Colors.white, size: 20)
const Spacer(),
Icon(
icon
),
],
),
),
),
);
}
/// returns Radius
BorderRadius radius([double? radius]) {
return BorderRadius.all(radiusCircular(radius ?? defaultRadius));
}
/// returns Radius
Radius radiusCircular([double? radius]) {
return Radius.circular(radius ?? defaultRadius);
}
}