سلام.من یک سوال مفهومی در مورد متغیر و کلاسها دارم.
در بخش آموزش دارت برای instance گرفتن از یک کلاس از عباراتی مشابه ;() Car car = Car استفاده میکردیم.
از زمان شروع فلاتر داخل VSCode از عباراتی مشابه ,prefixIcon : Icon(CupertinoIcons.at) برای instance گرفتن مثلا از کلاس Icon استفاده میکنیم
در سمت راست عبارت بالا اگر کلاسمان ورودی constructor داشته باشد داخل پرانتز ورودی را به کلاس میدهیم و اگر از متد یا متغیر کلاس خواستیم استفاده کنیم از دات در انتهای نام کلاس استفاده میکینم.
یک : لطفا بفرمایید تا اینجا درست گفتم؟
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
دو : این () که بدون اسم مینویسیم به چه معناست مثل کد زیر:
myOnTap: () {
updateSelectedSkill(_SkillType.photoshop);
},
سه : چرا updateSelectedSkill را مستقیم به myOnTap نداد مثل بقیه موارد؟ هر دو myOnTap و updateSelectedSkill در کلاس MyHomePageState_ هستند. چرا مثل زیر ننوشت :
myOnTap: updateSelectedSkill(_SkillType.photoshop);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
چهار: برای استفاده از متغیرهای یک کلاس در کلاس دیگر:
مثلا متغیر surfaceColor داخل کلاس MyApp تعریف شده است (private هم نیست) :
class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); // This widget is the root of your application. @override Widget build(BuildContext context) { Color surfaceColor = Color(0x0dffffff); return MaterialApp( title: 'Flutter Demo',
حال اگر بخواهیم داخل کلاس MyHomePageState_ از متغیر surfaceColor استفاده کنیم، امکان استفاده مستقیم نیست و اول باید یک instance از کلاس MyApp بگیریم تا به متعیرهای آن دسترسی داشته باشیم:
class _MyHomePageState extends State<MyHomePage> { . . . TextField( decoration: InputDecoration( prefixIcon : Icon(CupertinoIcons.at), labelText: 'Email', filled: true, fillColor: MyApp.surfaceColor
پس چرا به صورت fillColor: MyApp.surfaceColor دسترسی نداریم؟
مگر این خط یک نمونه گرفتن از کلاس MyApp و دستیابی به متغیرش نیست؟