Menu
CoddyTech

Metin Alanından Sayılar

Coddy'nin Flutter Journey'sinin Etkileşimli Uygulamalar bölümünün bir parçası. Ders 25 / 34.

Bir alan, rakamları gösterse bile her zaman bir String tutar: '12' metindir ve '12' * 7 84 etmez. Bununla hesaplama yapmak için onu bir int türüne dönüştür:

int.tryParse('12')    // 12
int.tryParse('hello') // null

null, "değer yok" anlamına gelir: 'hello' bir sayı değildir, dolayısıyla ortada bir sayı yoktur. Sonucun türü int?, yani bir int veya null'dır. Hesaplama yapmadan önce, ?? ile kullanmak üzere ona bir değer ver:

int age = int.tryParse(value) ?? 0;

a ?? b ifadesini "a null ise b, değilse a" diye oku. "try" olmadan int.parse de vardır, ancak sayı olmayan bir metinle karşılaştığında uygulamayı bir hatayla durdurur ve insanlar her türlü şeyi yazabilir.

Telefonda keyboardType: TextInputType.number, rakamlardan oluşan bir klavye açar; böylece insanlar neredeyse hiç harf yazmaz.

challenge icon

Görev

Orta
  • Alanı sayı klavyesini açacak şekilde ayarla.
  • onChanged içinde metni int.tryParse kullanarak int türüne dönüştür; sayı değilse 0 kullan ve değeri _age içinde tut.
  • Yaş 5 olduğunda, yaşın 7 ile çarpımını kullanarak That is 35 in dog years göster.

Kendin dene

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  String _ageText = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Dog Years')),
      body: Padding(
        padding: const EdgeInsets.all(24),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            TextField(
              decoration: const InputDecoration(
                labelText: 'Your age',
                border: OutlineInputBorder(),
              ),
              onChanged: (String value) {
                setState(() {
                  _ageText = value;
                });
              },
            ),
            const SizedBox(height: 24),
            Text('That is ? in dog years', style: const TextStyle(fontSize: 24)),
          ],
        ),
      ),
    );
  }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Etkileşimli Uygulamalar bölümündeki tüm dersler

Kendi başına pratik yap: Online Flutter derleyicisi