Dart 在颤振图标中,按钮在appBar中单击,但出现错误

Dart 在颤振图标中,按钮在appBar中单击,但出现错误,dart,dialog,flutter,alert,appbar,Dart,Dialog,Flutter,Alert,Appbar,我一直试图触发一个对话框时,图标按钮是点击在appBar,但错误来了 这个错误是持久性的 我认为showDialog()中传递的上下文有一些问题,我不确定 进口“包装:颤振/材料.省道”; 进口“包装:Flatter_colorpicker/Flatter_colorpicker.dart” void main() => runApp(new MyApp()); class MyApp extends StatefulWidget { ## Heading ## @override

我一直试图触发一个对话框时,图标按钮是点击在appBar,但错误来了

这个错误是持久性的

我认为showDialog()中传递的上下文有一些问题,我不确定 进口“包装:颤振/材料.省道”; 进口“包装:Flatter_colorpicker/Flatter_colorpicker.dart”

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget {
## Heading ##
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return _MyPortfolioState();
  }
}

class _MyPortfolioState extends State<MyApp> {
  MaterialColor primaryColor = Colors.blue;
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Portfolio',
        theme: new ThemeData(
          primarySwatch: primaryColor,
        ),
        home: Scaffold(
            appBar: AppBar(
                title: Text("Dhruv Agarwal"),
                textTheme: TextTheme(
                    display2: TextStyle(color: Color.fromARGB(1, 0, 0, 0))),
                actions: <Widget>[
              new IconButton(
                icon: Icon(Icons.format_color_text),
                tooltip: 'Change Color',
                onPressed: () {
                  Color pickerColor = primaryColor;
                  changeColor(Color color) {
                    setState(() => primaryColor = color);
                  }
                  showDialog (
                      context: context,
                      builder: (BuildContext context) {
                        return AlertDialog(
                          title: const Text('Pick a color!'),
                          content: SingleChildScrollView(
                            child: ColorPicker(
                              pickerColor: pickerColor,
                              onColorChanged: changeColor,
                              pickerAreaHeightPercent: 0.8,
                            ),
                          ),
                          actions: <Widget>[
                            FlatButton(
                              child: Text('Got it'),
                              onPressed: () {
                                setState(() => primaryColor = pickerColor);
                                Navigator.of(context).pop();
                              },
                            ),
                          ],
                        );
                      });
                },
              ),
            ])));
  }
}

//
//
void main()=>runApp(新的MyApp());
类MyApp扩展了StatefulWidget{
##标题##
@凌驾
状态createState(){
//TODO:实现createState
返回_MyPortfolioState();
}
}
类_MyPortfolioState扩展状态{
MaterialColor primaryColor=Colors.blue;
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“投资组合”,
主题:新主题数据(
primarySwatch:primaryColor,
),
家:脚手架(
appBar:appBar(
标题:文本(“Dhruv Agarwal”),
textTheme:textTheme(
display2:TextStyle(颜色:color.fromARGB(1,0,0)),
行动:[
新图标按钮(
图标:图标(图标。格式\颜色\文本),
工具提示:“更改颜色”,
已按下:(){
颜色选择器颜色=原色;
更改颜色(颜色){
设置状态(()=>primaryColor=color);
}
显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
标题:常量文本('选择颜色!'),
内容:SingleChildScrollView(
孩子:色彩采集器(
pickerColor:pickerColor,
变色,
选择器高度百分比:0.8,
),
),
行动:[
扁平按钮(
child:Text('Got it'),
已按下:(){
设置状态(()=>primaryColor=pickerColor);
Navigator.of(context.pop();
},
),
],
);
});
},
),
])));
}
}
//
//
重新加载时引发异常,未找到MaterialLocalization

Launching lib/main.dart on Redmi Note 5 Pro in debug mode...
Initializing gradle...
Resolving dependencies...
Gradle task 'assembleDebug'...
Built build/app/outputs/apk/debug/app-debug.apk.
Installing build/app/outputs/apk/app.apk...
I/zygote64(16669): Do partial code cache collection, code=28KB, data=20KB
I/zygote64(16669): After code cache collection, code=28KB, data=20KB
I/zygote64(16669): Increasing code cache capacity to 128KB
Syncing files to device Redmi Note 5 Pro...
I/flutter (16669): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
I/flutter (16669): The following assertion was thrown while handling a gesture:
I/flutter (16669): No MaterialLocalizations found.
I/flutter (16669): MyApp widgets require MaterialLocalizations to be provided by a Localizations widget ancestor.
I/flutter (16669): Localizations are used to generate many different messages, labels,and abbreviations which are used
I/flutter (16669): by the material library. 
I/flutter (16669): To introduce a MaterialLocalizations, either use a  MaterialApp at the root of your application to
I/flutter (16669): include them automatically, or add a Localization widget with a MaterialLocalizations delegate.
I/flutter (16669): The specific widget that could not find a MaterialLocalizations ancestor was:
I/flutter (16669):   MyApp
I/flutter (16669): The ancestors of this widget were:
I/flutter (16669):   [root]
I/flutter (16669): 
I/flutter (16669): When the exception was thrown, this was the stack:
I/flutter (16669): #0      debugCheckHasMaterialLocalizations.<anonymous closure> (package:flutter/src/material/debug.dart:124:7)
I/flutter (16669): #1      debugCheckHasMaterialLocalizations (package:flutter/src/material/debug.dart:127:4)
I/flutter (16669): #2      showDialog (package:flutter/src/material/dialog.dart:606:10)
I/flutter (16669): #3      MyApp.build.<anonymous closure> (file:///home/punisher/AndroidStudioProjects/first_app/portfolio/lib/main.dart:32:19)
I/flutter (16669): #4      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
I/flutter (16669): #5      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
I/flutter (16669): #6      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
I/flutter (16669): #7      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
I/flutter (16669): #8      TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:204:7)
I/flutter (16669): #9      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
I/flutter (16669): #10     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:147:20)
I/flutter (16669): #11     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22)
I/flutter (16669): #12     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7)
I/flutter (16669): #13     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:64:7)
I/flutter (16669): #14     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:48:7)
I/flutter (16669): #15     _invoke1 (dart:ui/hooks.dart:153:13)
I/flutter (16669): #16     _dispatchPointerDataPacket (dart:ui/hooks.dart:107:5)
I/flutter (16669): 
I/flutter (16669): Handler: onTap
I/flutter (16669): Recognizer:
I/flutter (16669):   TapGestureRecognizer#5070d(debugOwner: GestureDetector, state: ready, won arena, finalPosition:
I/flutter (16669):   Offset(354.2, 64.0), sent tap down)
I/flutter (16669): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (16669): Another exception was thrown: No MaterialLocalizations found.
在调试模式下在Redmi Note 5 Pro上启动lib/main.dart。。。
正在初始化gradle。。。
正在解析依赖项。。。
Gradle任务“assembleDebug”。。。
构建build/app/outputs/apk/debug/app-debug.apk。
正在安装build/app/outputs/apk/app.apk。。。
I/zygote64(16669):执行部分代码缓存收集,代码=28KB,数据=20KB
I/zygote64(16669):在代码缓存收集之后,代码=28KB,数据=20KB
I/zygote64(16669):将代码缓存容量增加到128KB
正在将文件同步到设备Redmi Note 5 Pro。。。
I/颤振(16669):══╡ 用手势捕捉异常╞═══════════════════════════════════════════════════════════════════
I/flatter(16669):在处理手势时抛出以下断言:
I/颤振(16669):未发现材料定位。
I/flatter(16669):MyApp小部件要求本地化小部件祖先提供MaterialLocalization。
I/颤振(16669):本地化用于生成许多不同的消息、标签和缩写
I/颤振(16669):由材料库提供。
I/flatter(16669):要引入MaterialLocalization,可以在应用程序的根目录下使用MaterialApp
I/flatter(16669):自动包含它们,或者添加带有MaterialLocalizations委托的本地化小部件。
I/flatter(16669):找不到MaterialLocalizations祖先的特定小部件是:
I/颤振(16669):MyApp
I/flatter(16669):这个小部件的祖先是:
I/颤振(16669):[根]
I/颤振(16669):
I/flatter(16669):当抛出异常时,这是堆栈:
I/颤振(16669):#0调试检查HasMaterialLocalization。(包:颤振/src/material/debug.dart:124:7)
I/flatter(16669):#1调试检查hasMaterialLocalization(包:flatter/src/material/debug.dart:127:4)
I/flatter(16669):#2 showDialog(包:flatter/src/material/dialog.dart:606:10)
I/颤振(16669):#3 MyApp.build。(file:///home/punisher/AndroidStudioProjects/first_app/portfolio/lib/main.dart:32:19)
I/颤振(16669):#4(InkResponseEstate.)(handleTap)(包装:颤振/src/材料/墨水)井。省道:507:14)
I/flatter(16669):#5#InkResponseState.build。(包装:颤振/src/材料/墨水井。省道:562:30)
I/flatter(16669):#6 GestureRecognizer.invokeCallback(包:flatter/src/signatures/recognizer.dart:102:24)
I/flatter(16669):#7 TapGestureRecognitor.#检查(包:flatter/src/signatures/tap.dart:242:9)
I/flatter(16669):#8 TapGestureRecognitor.Accept手势(包:flatter/src/signatures/tap.dart:204:7)
I/flatter(16669):#9 GestureArenaManager.sweep(包:flatter/src/signatures/arena.dart:156:27)
I/flatter(16669):#10#WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent(包:flatter/src/signatures/binding.dart:147:20)
I/flatter(16669):11_WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent(包:flatter/src/signatures/binding.dart:121:22)
I/flatter(16669):#12#WidgetsFlutterBinding&BindingBase&GestureBinding.#handlePointerEvent(包:flatter/src/signatures/binding.dart:101:7)
I/Flatter(16669):#13#WidgetsFlutterBinding&BindingBase&GestureBinding.#flushPointerEventQueue(包装:Flatter/src/gest
main() => runApp(
      MaterialApp(
        title: 'ColorPicker test',
        home: MyApp(),
      ),
    );