سلام
برنامه در هنگام اجرای این خط به مشکل میخوره:
onTap: widget.toggleThemeMode,
@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("top title"), actions: const [ SizedBox(width: 4), Icon(Icons.more), InkWell( onTap: widget.toggleThemeMode, child: Padding( padding: EdgeInsets.fromLTRB(10, 0, 20, 0), child: Icon(CupertinoIcons.ellipsis_vertical), ), ), ], ),
خطاش اینه:
lib/main.dart:143:26: Error: Undefined name 'widget'.
onTap: widget.toggleThemeMode,
^^^^^^
import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatefulWidget { const MyApp({super.key}); @override State<MyApp> createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { // This widget is the root of your application. ThemeMode _themeMode = ThemeMode.dark; @override Widget build(BuildContext context) { Color surfaceColor = Color(0x0dffffff); Color primaryColor = Colors.pink.shade400; return MaterialApp( title: 'Flutter Demo', theme: _themeMode == ThemeMode.dark ? MyAppThemeConfig.dark().getTheme() : MyAppThemeConfig.light().getTheme(), home: MyHomePage(toggleThemeMode: (){ setState(() { if(_themeMode ==ThemeMode.dark) _themeMode = ThemeMode.light; else _themeMode = ThemeMode.dark; }); },), ); } } class MyAppThemeConfig { final Color primaryColor; final Color secondaryTextColor; final Color surfaceColor; final Color backgroundColor; final Color appBarColor; final Brightness brightness; final Color primaryTextColor; MyAppThemeConfig.dark(): primaryColor = Colors.white, primaryTextColor = Colors.white, secondaryTextColor=Colors.white70, surfaceColor=Color(0x0dffffff), backgroundColor=Color.fromARGB(255, 30, 30, 30), appBarColor=Colors.black, brightness=Brightness.dark; MyAppThemeConfig.light():primaryColor = Colors.grey.shade900, primaryTextColor = Colors.white, secondaryTextColor=Colors.grey.shade900.withOpacity(0.8), surfaceColor=Color(0x0d000000), backgroundColor=Colors.white, appBarColor=Color.fromARGB(255, 235, 235, 235), brightness=Brightness.light; ThemeData getTheme(){ return ThemeData( // This is the theme of your application. // // Try running your application with "flutter run". You'll see the // application has a blue toolbar. Then, without quitting the app, try // changing the primarySwatch below to Colors.green and then invoke // "hot reload" (press "r" in the console where you ran "flutter run", // or simply save your changes to "hot reload" in a Flutter IDE). // Notice that the counter didn't reset back to zero; the application // is not restarted. primarySwatch: Colors.blue, primaryColor: primaryColor, brightness: brightness, elevatedButtonTheme: ElevatedButtonThemeData( style: ButtonStyle( backgroundColor: MaterialStatePropertyAll(primaryColor), ), ), dividerTheme: DividerThemeData(indent: 0, endIndent: 0), dividerColor: surfaceColor, inputDecorationTheme: InputDecorationTheme( border: OutlineInputBorder( borderRadius: BorderRadius.circular(8), borderSide: BorderSide.none), filled: true, fillColor: surfaceColor, ), scaffoldBackgroundColor: backgroundColor, appBarTheme: AppBarTheme(backgroundColor: appBarColor, foregroundColor: primaryTextColor ), textTheme: GoogleFonts.latoTextTheme(TextTheme( bodyText2: TextStyle(fontSize: 16,color:primaryColor,), bodyText1: TextStyle( fontSize: 13, color: secondaryTextColor), headline6: TextStyle(fontWeight: FontWeight.w700,color:primaryColor), subtitle1: TextStyle(fontSize: 16, fontWeight: FontWeight.bold,color:primaryColor))), ); } } class MyHomePage extends StatefulWidget { final Function() toggleThemeMode; const MyHomePage({Key? key, required this.toggleThemeMode}) : super(key : key); @override State<MyHomePage> createState() => _MyHomePageState(); } enum _SkillType { php, python, vb, javaScript, } class _MyHomePageState extends State<MyHomePage> { _SkillType _skill = _SkillType.php; void updateSelectedSkill(_SkillType skillType) { setState(() { this._skill = skillType; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("ddd ddddjjjjjdd"), actions: const [ SizedBox(width: 4), Icon(Icons.more), InkWell( // onTap: widget.toggleThemeMode, child: Padding( padding: EdgeInsets.fromLTRB(10, 0, 20, 0), child: Icon(CupertinoIcons.ellipsis_vertical), ), ), ], ), body: SingleChildScrollView( physics: BouncingScrollPhysics(), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(32), child: Row( children: [ ClipRRect( borderRadius: BorderRadius.circular(10), child: Image.asset('assets/images/php.png', width: 60, height: 60)), SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'hamid delbari', style: Theme.of(context).textTheme.subtitle1, ), Text('programmer', style: Theme.of(context).textTheme.bodyText2), Row( children: [ Icon(CupertinoIcons.location_solid, size: 15, color: Theme.of(context) .textTheme .bodyText1! .color), SizedBox(width: 3), Text('34 years', style: Theme.of(context).textTheme.caption), ], ) ], ), ), Icon(CupertinoIcons.heart, color: Theme.of(context).primaryColor), ], ), ), Padding( padding: const EdgeInsets.fromLTRB(32, 0, 16, 16), child: Text( 'hi. im hamid delbari, programming for 15 years. php, pythn, java expert ', style: Theme.of(context).textTheme.bodyText1, ), ), Divider(), Padding( padding: const EdgeInsets.fromLTRB(18, 0, 18, 12), child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text('Skills', style: Theme.of(context) .textTheme .bodyText2! .copyWith(fontWeight: FontWeight.w900)), SizedBox(width: 2), Icon(CupertinoIcons.chevron_down, size: 12), ], ), ), Center( child: Wrap( direction: Axis.horizontal, spacing: 8, runSpacing: 8, children: [ Skill( type: _SkillType.php, title: 'php', imagePath: 'assets/images/php.png', shadowColor: Colors.red, isActive: _skill == _SkillType.php, onTap: () { updateSelectedSkill(_SkillType.php); }, ), Skill( type: _SkillType.python, title: 'python', imagePath: 'assets/images/python.png', shadowColor: Colors.yellow, isActive: _skill == _SkillType.python, onTap: () { updateSelectedSkill(_SkillType.python); }, ), Skill( type: _SkillType.vb, title: 'vb', imagePath: 'assets/images/visual-basic.png', shadowColor: Colors.deepPurple, isActive: _skill == _SkillType.vb, onTap: () { updateSelectedSkill(_SkillType.vb); }, ), Skill( type: _SkillType.javaScript, title: 'java script', imagePath: 'assets/images/java-script.png', shadowColor: Colors.black, isActive: _skill == _SkillType.javaScript, onTap: () { updateSelectedSkill(_SkillType.javaScript); }, ), Skill( type: _SkillType.javaScript, title: 'java script', imagePath: 'assets/images/java-script.png', shadowColor: Colors.black, isActive: _skill == _SkillType.javaScript, onTap: () { updateSelectedSkill(_SkillType.javaScript); }, ), ], ), ), Divider(), Padding( padding: const EdgeInsets.fromLTRB(32, 16, 32, 16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('Personal Information', style: Theme.of(context) .textTheme .bodyText2! .copyWith(fontWeight: FontWeight.w900)), SizedBox( height: 12, ), TextField( decoration: InputDecoration( labelText: "Email", prefixIcon: Icon(CupertinoIcons.at), ), ), SizedBox( height: 12, ), TextField( decoration: InputDecoration( labelText: "Password", prefixIcon: Icon(CupertinoIcons.lock), ), ), SizedBox(height: 6), SizedBox( width: double.infinity, height: 48, child: ElevatedButton( onPressed: () {}, child: Text('Save'))) ], ), ), ], ), )); } } class Skill extends StatelessWidget { final _SkillType type; final String title; final String imagePath; final Color shadowColor; final bool isActive; final Function() onTap; const Skill({ super.key, required this.type, required this.title, required this.imagePath, required this.shadowColor, required this.isActive, required this.onTap, }); @override Widget build(BuildContext context) { final BorderRadius defaultBorderRadius = BorderRadius.circular(20); return InkWell( borderRadius: defaultBorderRadius, onTap: onTap, child: Container( width: 110, height: 110, decoration: isActive ? BoxDecoration( color: Theme.of(context).dividerColor, borderRadius: defaultBorderRadius, ) : null, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Container( decoration: isActive ? BoxDecoration(boxShadow: [ BoxShadow( color: shadowColor.withOpacity(0.5), blurRadius: 40, ) ]) : null, child: Image.asset(imagePath, width: 60, height: 60)), const SizedBox( height: 8, ), Text(title), ], ), ), ); } }
ممنون میشم بگید مشکل چیه؟