flutter “材料”的库比蒂诺当量

gv8xihay  于 2022-11-30  发布在  Flutter
关注(0)|答案(3)|浏览(169)

我已经在互联网上进行了很长的研究,关于这个(我认为是恶作剧)在flutter中使用Material小部件,任何flutter开发人员都面临No Material widget found.异常,即使在使用库比蒂诺设计小部件时。
要生成的一个简单示例是

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class Example extends StatelessWidget {
  const Example({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      navigationBar: CupertinoNavigationBar(
        middle: Text('Example'),
        leading: IconButton(
          onPressed: () {},
          icon: Icon(
            Icons.close,
            color: Colors.black54,
          ),
        ),
      ),
      child: Center(
        child: IconButton(
          onPressed: () {},
          icon: Icon(
            Icons.close,
            color: Colors.black54,
          ),
        ),
      ),
    );
  }
}

navigationBarbodyIconButton都无法运作,因此会产生相同的例外状况。
当遇到这个异常时,我总是把它 Package 在一个Material中来绕过它,但我认为我做错了。IconButton不是唯一的小部件,我搜索了很多都没有用。
请告诉我,我错过了什么?并提前感谢。

0qx6xfy6

0qx6xfy61#

您需要将根Widget Package 在MaterialApp()中,以便可以访问Material组件。
例如,

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}
bsxbgnwa

bsxbgnwa2#

不确定Cupertino部分,但(afaik)您需要将您的应用程序 Package 在MaterialApp()中以访问Material部件和其他方法等。

htrmnn0y

htrmnn0y3#

对于MaterialApp,您必须使用IconButton;对于CupertinoApp,您必须使用CupertinoButton,但请使用child而不是icon

相关问题