سلام.من یک سوال مفهومی در مورد متغیر و کلاسها دارم.
در بخش آموزش دارت برای 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 و دستیابی به متغیرش نیست؟