সময় বাছাইকারী

সময় চয়নকারী ব্যবহারকারীদের একটি সময় নির্বাচন করার একটি উপায় প্রদান করে। আপনি আপনার অ্যাপে টাইম পিকার প্রয়োগ করতে TimePicker এবং TimeInput কম্পোজেবল ব্যবহার করতে পারেন।

প্রকারভেদ

দুই ধরনের সময় চয়নকারী আছে:

  • ডায়াল : ব্যবহারকারীদের একটি ডায়ালের চারপাশে একটি হ্যান্ডেল সরানোর মাধ্যমে একটি সময় সেট করতে দেয়।
  • ইনপুট : ব্যবহারকারীদের তাদের কীবোর্ড ব্যবহার করে একটি সময় সেট করতে দেয়।

নিম্নলিখিত চিত্রটি বাম দিকে একটি ডায়াল টাইম পিকার এবং ডানদিকে একটি ইনপুট টাইম পিকারের উদাহরণ প্রদান করে:

একটি ডায়াল এবং একটি ইনপুট সময় পিকার।
চিত্র 1. একটি ডায়াল এবং একটি ইনপুট সময় পিকার।

API পৃষ্ঠ

একটি টাইম পিকার প্রয়োগ করতে, হয় TimePicker বা TimeInput কম্পোজেবল ব্যবহার করুন:

  • TimePicker : একটি ডায়াল টাইম পিকার প্রয়োগ করে।
  • TimeInput : একটি ইনপুট সময় পিকার প্রয়োগ করে।

রাজ্য

TimePicker এবং TimeInput উভয়ের জন্য, আপনাকে অবশ্যই একটি TimePickerState পাস করতে হবে। এটি আপনাকে পিকারে প্রদর্শিত ডিফল্ট নির্বাচিত সময় সেট করতে দেয়। এটি ব্যবহারকারী পিকার ব্যবহার করে যে সময় বেছে নিয়েছে তাও ক্যাপচার করে।

ডায়ালগ

সময় বাছাইকারী ডায়ালগে উপস্থিত হয়। এই গাইডের উদাহরণগুলি ডায়ালগ ব্যবহার করে না। ডায়ালগ ব্যবহার করে এমন উদাহরণের জন্য, টাইম পিকার গাইডের ডায়ালগ দেখুন।

টাইম পিকার ডায়াল করুন

এই স্নিপেটটি দেখায় কিভাবে একটি বেসিক ডায়াল টাইম পিকার প্রয়োগ করতে হয়।

@Composable
fun DialExample(
    onConfirm: () -> Unit,
    onDismiss: () -> Unit,
) {
    val currentTime = Calendar.getInstance()

    val timePickerState = rememberTimePickerState(
        initialHour = currentTime.get(Calendar.HOUR_OF_DAY),
        initialMinute = currentTime.get(Calendar.MINUTE),
        is24Hour = true,
    )

    Column {
        TimePicker(
            state = timePickerState,
        )
        Button(onClick = onDismiss) {
            Text("Dismiss picker")
        }
        Button(onClick = onConfirm) {
            Text("Confirm selection")
        }
    }
}

এই স্নিপেটে নিম্নলিখিত বিবেচনা করুন:

  • Calendar.getInstance() বর্তমান সময়ের সাথে TimePickerState আরম্ভ করে।
    • এই উদাহরণটি java.util.Calendar ব্যবহার করে। সমস্ত Android সংস্করণে বিকল্পভাবে java.time.LocalTime ব্যবহার করতে আপনার প্রকল্পে Java 8+ API desugaring সক্ষম করুন৷
  • TimePicker কম্পোজেবল টাইম পিকার প্রদর্শন করে, timePickerState একটি প্যারামিটার হিসাবে গ্রহণ করে।
  • বাস্তবায়নে দুটি বোতাম রয়েছে: একটি নির্বাচন নিশ্চিত করতে এবং অন্যটি চয়নকারীকে বরখাস্ত করতে।

এই বাস্তবায়ন নিম্নলিখিত হিসাবে প্রদর্শিত হবে:

একটি ডায়াল টাইম পিকার। ব্যবহারকারী ডায়াল ব্যবহার করে একটি সময় নির্বাচন করতে পারেন।
চিত্র 2। একটি ডায়াল টাইম পিকার।

ইনপুট সময় পিকার

এই স্নিপেটটি দেখায় কিভাবে একটি মৌলিক ইনপুট স্টাইল টাইম পিকার বাস্তবায়ন করতে হয়।

@Composable
fun InputExample(
    onConfirm: () -> Unit,
    onDismiss: () -> Unit,
) {
    val currentTime = Calendar.getInstance()

    val timePickerState = rememberTimePickerState(
        initialHour = currentTime.get(Calendar.HOUR_OF_DAY),
        initialMinute = currentTime.get(Calendar.MINUTE),
        is24Hour = true,
    )

    Column {
        TimeInput(
            state = timePickerState,
        )
        Button(onClick = onDismiss) {
            Text("Dismiss picker")
        }
        Button(onClick = onConfirm) {
            Text("Confirm selection")
        }
    }
}

এই বাস্তবায়নে লক্ষ্য করার মূল বিষয়গুলি:

  • গঠনটি মূলত ডায়াল টাইম পিকারের মতোই, প্রধান পার্থক্য হল TimePicker এর পরিবর্তে TimeInput ব্যবহার করা।
  • timePickerState এর জন্য is24Hour প্যারামিটার স্পষ্টভাবে true সেট করা আছে। ডিফল্টরূপে, এই মান false

এই বাস্তবায়ন নিম্নলিখিত হিসাবে প্রদর্শিত হবে:

একটি ইনপুট সময় পিকার। ব্যবহারকারী পাঠ্য ক্ষেত্র ব্যবহার করে একটি সময় লিখতে পারেন।
চিত্র 3. একটি ইনপুট সময় পিকার।

রাষ্ট্র ব্যবহার করুন

ব্যবহারকারী একটি টাইম পিকারে যে সময়টি বেছে নিয়েছে তা ব্যবহার করতে, আপনার onConfirm ফাংশনে উপযুক্ত TimePickerState পাস করুন। প্যারেন্ট কম্পোজেবল তারপর TimePickerState.hour এবং TimePickerState.minute মাধ্যমে নির্বাচিত সময় অ্যাক্সেস করতে পারে।

নিম্নলিখিত স্নিপেট দেখায় কিভাবে এটি করতে হয়:

@Composable
fun DialUseStateExample(
    onConfirm: (TimePickerState) -> Unit,
    onDismiss: () -> Unit,
) {
    val currentTime = Calendar.getInstance()

    val timePickerState = rememberTimePickerState(
        initialHour = currentTime.get(Calendar.HOUR_OF_DAY),
        initialMinute = currentTime.get(Calendar.MINUTE),
        is24Hour = true,
    )

    Column {
        TimePicker(
            state = timePickerState,
        )
        Button(onClick = onDismiss) {
            Text("Dismiss picker")
        }
        Button(onClick = { onConfirm(timePickerState) }) {
            Text("Confirm selection")
        }
    }
}

আপনি তারপর এই মত কম্পোজেবল কল করতে পারেন:

var selectedTime: TimePickerState? by remember { mutableStateOf(null) }

// ...

DialUseStateExample(
    onDismiss = {
        showDialExample = false
    },
    onConfirm = {
            time ->
        selectedTime = time
        showDialExample = false
    },
)

// ...

if (selectedTime != null) {
    val cal = Calendar.getInstance()
    cal.set(Calendar.HOUR_OF_DAY, selectedTime!!.hour)
    cal.set(Calendar.MINUTE, selectedTime!!.minute)
    cal.isLenient = false
    Text("Selected time = ${formatter.format(cal.time)}")
} else {
    Text("No time selected.")
}

আরও বিস্তারিত জানার জন্য, স্নিপেট অ্যাপে সম্পূর্ণ বাস্তবায়ন দেখুন।

অতিরিক্ত সম্পদ