برنامه نویسی

نوشتن کد پاک کننده Jetpack Compose با مجموعه قوانین نوشتن توییتر

فهرست مطالب

  1. معرفی
  2. کدی که در حال بازسازی خواهیم بود
  3. اشتباه 1
  4. اشتباه 2
  5. اشتباه 3
  6. اشتباه 4
  7. کد بازسازی شده

معرفی

آخرین برنامه من برای دامداران در آمریکای شمالی

GitHub

کدی که ما دوباره فاکتور می کنیم:

@Composable
fun CalendarDock(viewModel: EditCalfViewModel){
val calfDate = viewModel.uiState.value.birthDate!!
    val convertedDate = calfDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    val selectedDate = remember {
        mutableStateOf<LocalDate?>(convertedDate)
    }
    val calendarState = rememberSheetState()

    CalendarDialog(
        state = calendarState,
        config = CalendarConfig(
            monthSelection = true,
            yearSelection = true
        ),
        selection = CalendarSelection.Date(selectedDate = selectedDate.value){ newDate ->

            selectedDate.value = newDate
            viewModel.updateDate(newDate)

        }
    )
    Row(
        horizontalArrangement = Arrangement.SpaceBetween) {
        OutlinedTextField(
            //state
            enabled = false,
            value = "Date born: "+ selectedDate.value.toString(),
            onValueChange = {  },
            //style
            singleLine = true,
            placeholder = {
                Text(text = "Date", fontSize = 20.sp)
            },
            modifier = Modifier
                .fillMaxWidth(),
            textStyle = TextStyle(fontSize = 20.sp),


            )
    }


}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اشتباه 1: ارسال ViewModel به عنوان پارامتر

  • در امضای تابع compose که در viewModel به عنوان پارامتر ارسال می کنم توجه کنید:
fun CalendarDock(viewModel: EditCalfViewModel)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اشتباه 2: بدون پارامتر اصلاح کننده

اشتباه 3: موقعیت پارامتر اصلاح کننده

  • هنگام اضافه کردن پارامتر اصلاح کننده، باید مطمئن شویم که آن را در موقعیت صحیح اضافه می کنیم. هنگام اضافه کردن پارامترها به ترکیب توابع، ابتدا پارامترهای اجباری می آیند و سپس پارامتر اصلاح کننده می آید. پارامتر اصلاح کننده باید اولین شکاف پارامتر اختیاری را اشغال کند تا یک استثنا ثابت برای توسعه دهندگان دیگر ایجاد کند. این بدان معناست که با رشد پروژه ما و اضافه کردن افراد بیشتری به تیم خود، آنها می توانند انتظار یک تجربه برنامه نویسی ثابت را داشته باشند.

اشتباه 4: اصلاح کننده ها باید پارامترهای پیش فرض داشته باشند

  • همانطور که قوانین می گوید:
    Composables that accept a Modifier as a parameter to be applied to the whole component represented by the composable function should name the parameter modifier and assign the parameter a default value of Modifier.

  • اگر یک پارامتر اصلاح کننده دارید، Long story باید مقدار پیش فرض Modifier را به آن بدهید

کد بازسازی شده:

  • بنابراین با تمام این قوانین اعمال شده، کد بازسازی شده ما اکنون به شکل زیر است:
@Composable
fun CalendarDock2(dateBorn: Date,selectedAction:(LocalDate)->Unit,modifier: Modifier = Modifier){

    val convertedDate = dateBorn.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    val selectedDate = remember { mutableStateOf<LocalDate?>(convertedDate) }
    val calendarState = rememberSheetState()

    CalendarDialog(
        state = calendarState,
        config = CalendarConfig(
            monthSelection = true,
            yearSelection = true
        ),
        selection = CalendarSelection.Date(selectedDate = selectedDate.value){ newDate ->

            selectedDate.value = newDate
            selectedAction(newDate)

        }
    )
    Row(
        horizontalArrangement = Arrangement.SpaceBetween,
    ) {
        OutlinedTextField(
            //state
            enabled = false,
            value = "Date born: "+ selectedDate.value.toString(),
            onValueChange = {  },
            //style
            singleLine = true,
            placeholder = {
                Text(text = "Date", fontSize = 20.sp)
            },
            modifier = modifier,
            textStyle = TextStyle(fontSize = 20.sp),


            )
    }


}


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا