Arkadaşlar şimdi ben bir uygulama geliştiriyorum bu uygulama içerisinde bazı resimler ve o resimlere ait açıklamalar var bunları Map içerisinde belirledim, her bir resmin karşısında bir metin var, metinler ingilizce ve cihaz diline göre değişmesini istiyorum.
Buraya bir örnek bırakıyorum;
Map<String, String> imageDescriptions = {
'2 Poems.jpg':
'Oscar Wilde was a 19th-century Irish writer, playwright and poet.He is best known forhis plays and satirical works, but he also left important works as a poet.Wildes poetry is often noted for its aesthetic and emotional depth and is often rendered with irony and wit.',
'A Christmas Carol.jpg':
'The story begins with Scrooge being visited on Christmas Eve by the ghost of his old partner Jacob Marley. Marley comes to warn Scrooge of the consequences of his life of selfishness and lovelessness and convinces Scrooge to go on a journey visited by three ghosts.',
'11 Intentions.jpg':
'Oscar Wilde was a 19th-century Irish writer, playwright and poet.He is best known forhis plays and satirical works, but he also left important works as a poet.Wildes poetry is often noted for its aesthetic and emotional depth and is often rendered with irony and wit.',}
daha sonra ekranda ki resimlere tıklandığın da DetailsPage.dart sayfasına geçiş yapıyoruz ve resim bir container icinde ve hemen altında resim ile eşleşmiş açıklama metni var.
Resimler;
slide('New Books', [
'2 Poems.jpg',
'A Christmas Carol.jpg',
'11 Intentions.jpg',
'A London Life.jpg',
'A Modern Utopia.jpg',
'a plug year.jpg',
'america.jpg',
'A Christmas Carol.jpg',
'anna karenina.jpg',
'art of war.jpg',
]),
Resimleri ve açıklamaları DetailsPage sayfasina gönderen kodlar;
Widget slide(dynamic info, List<String> imageList) {
return Container(
margin: EdgeInsets.fromLTRB(
screenWidth * 0.05,
screenHeight * 0.02,
screenWidth * 0.05,
0.0,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
info,
style: TextStyle(
color: Colors.white,
fontSize: screenWidth * 0.04,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 8.0),
Container(
height: screenHeight * 0.2,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: imageList.length,
itemBuilder: (context, index) {
return GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailsPage(
imageName: imageList[index],
description:
imageDescriptions[imageList[index]] ?? ""),
),
);
},
child: Container(
width: screenWidth * 0.20, // box lenght
height: screenHeight * 0.1,
margin: EdgeInsets.symmetric(horizontal: 5.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12.0),
image: DecorationImage(
image: AssetImage('assets/pics/${imageList[index]}'),
fit: BoxFit.cover,
),
),
),
);
},
),
),
],
),
);
}
DetailsPage sayfasında ki bilgi çeken yerler
Container(
height: screenHeight * 0.5,
child: Align(
alignment: Alignment.center,
child: SizedBox(
width: screenWidth, // Image size settings
child: Image.asset(
'assets/pics/${widget.imageName}', // here is images
fit: BoxFit.fill,
),
),
),
),
Padding(
padding: const EdgeInsets.only(left: 10.0),
child: Text(
widget.description, // Use description from widget
style: TextStyle(
fontSize: screenWidth * 0.1 / 3, color: Colors.white),
),
),
evet gördüğünüz gibi işlev bu kodlar da gerçekleşiyor. Daha öncesinden Localization ile arb dosyaları olusturup Map içerisinde ki metinler yerine onları kullanmak istedim ama Map her hangi bir build içerisinde olmadığı için bunu yapamadım. Kodların tam halini atmak istemedim çünkü 574 satır kod var 😃 . Kısacası gördüğünüz gibi slide isminde bir widget var bu widget sayesinde resim kartları oluşturdum ve bu resimlere tıklandıgında olacakları ekledim, class extends altında Map var ve resimler bu Map içerisinde metinler ile eşleşiyor ve resime tıklandığında resim ve eşleştiği metin Details sayfasında görüntüleniyor, benim istediğim şey ise bu metinleri türkçe ve ingilizce halde kullanmak.
Bu konu hakkında bazı teorilerim var mesela sadece metinler değil slide içerisinde ki New Books texti de türkçeleşmiyor. Sanırım Map ve resim kartlarında ki başlıklar widget bölümünden çekildiği için durum böyle. Ama diğer türlü daha pratik bir kullanım nasıl sağlanabilir bilmiyorum.