مفتاح تبديل الوضع الداكن
جزء من قسم تصميم يتكيف مع الشاشة في رحلة Flutter على Coddy. الدرس 25 من 30.
يريد بعض الأشخاص استخدام الوضع الداكن في تطبيق واحد دون التطبيقات الأخرى. امنحهم مفتاح تبديل.
themeMode: إعداد كسائر الإعدادات، لذا يمكن أن تأتي قيمته من الحالة. احتفظ بقيمة bool في State الخاصة بـ MyApp، وهي الواجهة التي تنشئ MaterialApp، واختر الوضع منها:
bool _dark = false;
MaterialApp(
themeMode: _dark ? ThemeMode.dark : ThemeMode.light,
...
)عندما يغيّر مفتاح التبديل قيمة _dark داخل setState، تُنفَّذ build مجددًا، وتحصل MaterialApp على الوضع الجديد، فتتحول سمة كل شاشة دفعة واحدة مع تلاشي قصير.
يجب أن تكون الحالة أعلى MaterialApp، لأن اختيار السمة يتم هناك. ولهذا السبب فإن MyApp هي StatefulWidget هنا.
التحدي
سهلاجعل المفتاح يبدّل السمة:
- في
onChanged، خزّن القيمة الجديدة في_darkداخلsetState - اضبط
themeMode:فيMaterialAppاستنادًا إلى_dark: داكنة عندما تكون القيمة true، وفاتحة عندما تكون false
جرّب بنفسك
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool _dark = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigo),
),
darkTheme: ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.indigo,
brightness: Brightness.dark,
),
),
home: Scaffold(
appBar: AppBar(title: const Text('Night Reader')),
body: Center(
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Text('Dark mode', style: TextStyle(fontSize: 20)),
const SizedBox(width: 12),
Switch(
value: _dark,
onChanged: (value) {},
),
],
),
),
),
);
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس تصميم يتكيف مع الشاشة
1التشارك في الصف
Expanded يملأ الصفمشاركة المساحة باستخدام flexFlexible يحتضن عنصره الفرعيSpacer يباعد بين العناصر6السمات والوضع الداكن
سمة تطبيق من بذرةألوان Theme.of(context)أنماط النص من السمةسمة داكنةمفتاح تبديل الوضع الداكنتدرّب بنفسك: مترجم Flutter عبر الإنترنت