No MaterialLocalizations found (Flutter)
在显示SimpleDialog时候程序报错 No MaterialLocalizations found 没有找到 MaterialLocalizations
搜索找到原因 runApp 需要先调用 StatelessWidget 返回一个 MaterialApp实例.
void main() => runApp(MainPage());
class MainPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',
      debugShowCheckedModeBanner: false,
      home: HomePage(),
    );
  }
}
也就是说runApp 直接接受一个 StatefulWidget就会出现这个错误
完整代码
import 'package:flutter/material.dart';
void main() => runApp(MainPage());
class MainPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',
      debugShowCheckedModeBanner: false,
      home: HomePage(),
    );
  }
}
class HomePage extends StatefulWidget {
  @override
  _HomePage createState() {
    return _HomePage(title: '简单对话框组件');
  }
}
enum Department { treasury, state }
class _HomePage extends State<HomePage> {
  _HomePage({Key key, @required this.title});
  final String title;
  ThemeData themeData = new ThemeData.light();
  Future<void> _askedToLead() async {
    switch (await showDialog<Department>(
        context: context,
        builder: (BuildContext context) {
          return SimpleDialog(
            title: const Text('Select assignment'),
            children: <Widget>[
              SimpleDialogOption(
                onPressed: () {
                  Navigator.pop(context, Department.treasury);
                },
                child: const Text('Treasury department'),
              ),
              SimpleDialogOption(
                onPressed: () {
                  Navigator.pop(context, Department.state);
                },
                child: const Text('State department'),
              ),
            ],
          );
        })) {
      case Department.treasury:
        // Let's go.
        // ...
        break;
      case Department.state:
        // ...
        break;
    }
  }
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: this.title,
      debugShowCheckedModeBanner: false,
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text(this.title),
        ),
        body: null,
        floatingActionButton: FloatingActionButton(
          child: Icon(Icons.format_list_numbered),
          onPressed: _askedToLead,
        ),
      ),
      theme: themeData,
    );
  }
}
No MaterialLocalizations found (Flutter)的更多相关文章
- flutter dialog异常Another exception was thrown: No MaterialLocalizations found
		
flutter dialog异常Another exception was thrown: No MaterialLocalizations found import 'package:flutter ...
 - Flutter学习(一)之MaterialApp和Scaffold组件使用详解
		
一,前言: MaterialApp和Scaffold是Flutter提供的两个Widget,其中: MaterialApp是一个方便的Widget,它封装了应用程序实现Material Design所 ...
 - Flutter之MaterialApp使用详解
		
来自: https://cloud.tencent.com/developer/article/1337184 字段 类型 navigatorKey(导航键) GlobalKey<Navigat ...
 - flutter入门之常见的flutter问题汇总(转)
		
1. 使用AppBar后如何去掉左边的返回箭头.左边的图标对应的是leading,源代码如下(吐槽一下,CSDN暂不支持dart语言): Widget leading = widget.leading ...
 - Flutter布局--appbar导航栏和状态栏
		
MaterialApp 先看下上图的具体用法:1. title:标题2. actions:表示右侧的按钮的动作3. leading:表示左侧的按钮的动作4. flexibleSpace:5. back ...
 - flutter 延时函数delay Loading页面
		
loading 页面 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class Lo ...
 - flutter dialog异常Another exception was thrown: Navigator operation requested with a context that does not include a Navigator
		
我在使用flutter里的对话框控件的时候遇到了一个奇怪的错误 Another exception was thrown: Navigator operation requested with a c ...
 - 一切皆组件的Flutter,安能辨我是雄雌
		
从一开始接触Flutter,相信读者都会铭记一句话,那就是--一切皆组件.今天我们就来体会一下这句话的神奇魔力,我们先从实际的产品需求说起. 我们先来看一个简化的运行图: 我们要实现如上图所示的日期选 ...
 - 【Flutter】功能型组件之对话框详解
		
前言 对话框本质上也是UI布局,通常一个对话框会包含标题.内容,以及一些操作按钮,为此,Material库中提供了一些现成的对话框组件来用于快速的构建出一个完整的对话框. 接口描述 // 1. Ale ...
 
随机推荐
- mysql修改lower_case_table_names产生的问题
			
1.参数含义: lower_case_table_names: 此参数不可以动态修改,必须重启数据库 lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区 ...
 - DM浅尝辄止
			
都是大佬的笔记啊啊啊啊 dialog management 对话状态维护(dialog state tracking, DST) 生成系统决策(dialog policy) 系统行为(dialog a ...
 - pyx文件 生成pyd 文件用于 cython调用
			
转于:https://www.2cto.com/kf/201405/304168.html 1. 初衷 最近学用python,python不愧是为程序员考虑的编程语言,写起来很快很方便,大大节省开发效 ...
 - SQL注入之Sqli-labs系列第二十七关(过滤空格、注释符、union select)和第二十七A
			
开始挑战第二十七关(Trick with SELECT & UNION) 第二十七A关(Trick with SELECT & UNION) 0x1看看源代码 (1)与26关一样,这次 ...
 - 20165228 学习基础和C语言基础调查
			
========== 做中学读后感 我依然认为兴趣与自觉性是推动一个人进步的两大因素,他们之间的区别是"兴趣"带来的影响更多是主动性的学习,而"自觉"则是略显被 ...
 - maven工程的多环境配置方案(profile)
			
前言: 写一篇水文来打发下时间吧^_^. 在应用开发中, 总会遇到开发/测试/预发布/线上环境, 其环境不同, 其具体的配置项也有所不同, 因此如何快速的切换各个环境配置, 进行打包配置, 成了一个小 ...
 - [LeetCode&Python] Problem 541. Reverse String II
			
Given a string and an integer k, you need to reverse the first k characters for every 2k characters ...
 - ajax遍历数组对象
			
success: function(data){ console.log(data); for (var warn in data) { alert(data[warn].kh_lxr); } } d ...
 - this语句的用法第一、二点
			
1.this是js的一个关键字,指定一个对象然后去代替他. 函数内的this和函数外的this,函数内的this指向行为发生的主体.函数外的this都指向window没有意思. 例题: functio ...
 - 2017.7.11  linux 挂载
			
挂载:Liunx采用树形的文件管理系统,也就是在Linux系统中,可以说已经没有分区的概念了.分区在Linux和其他设备一样都只是一个文件.要使用一个分区必须把它加载到文件系统中.这可能难于理解,继续 ...