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

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

প্রকারভেদ

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

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

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

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

এপিআই সারফেস

একটি টাইম পিকার বাস্তবায়ন করতে, 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 ব্যবহার করা হয়েছে। আপনার প্রোজেক্টে Java 8+ API ডিসগারিং সক্ষম করুন, বিকল্পভাবে সমস্ত অ্যান্ড্রয়েড সংস্করণে java.time.LocalTime ব্যবহার করুন।
  • TimePicker কম্পোজেবল টাইম পিকার প্রদর্শন করে, timePickerState প্যারামিটার হিসেবে গ্রহণ করে।
  • বাস্তবায়নে দুটি বোতাম রয়েছে: একটি নির্বাচন নিশ্চিত করার জন্য এবং অন্যটি পিকারকে বাতিল করার জন্য।

এই বাস্তবায়নটি নিম্নরূপ দেখাচ্ছে:

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

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

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

@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

এই বাস্তবায়নটি নিম্নরূপ দেখাচ্ছে:

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

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

ব্যবহারকারীর টাইম পিকারে নির্বাচিত সময়টি কাজে লাগানোর জন্য, আপনার 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.")
}

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

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