库比蒂诺相当于“材料”
Posted
技术标签:
【中文标题】库比蒂诺相当于“材料”【英文标题】:cupertino equivalent of `Material` 【发布时间】:2021-10-12 01:53:24 【问题描述】:我在互联网上对 Material
小部件在颤振中的使用进行了长期研究(我认为这是恶作剧),任何颤振开发人员都面临 No Material widget found.
异常,即使在使用 Cupertino 设计小部件时也是如此。
一个简单的例子是
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,
),
),
),
);
navigationBar
和 body
IconButton
都不起作用,导致相同的异常。
当遇到这个异常时,我总是将它包装在 Material
中以绕过它,但我认为这样做是错误的。IconButton
不是唯一的小部件,我搜索了很多都无济于事。
请告诉我我错过了什么?并提前致谢。
【问题讨论】:
@Faizan Darwesh 和@JaffaKetchup 没有人知道颤振不知道MaterialApp
问题是它的替换和它的后代像Material
因为有很多非物质小部件取决于他们喜欢IconButton
我也有同样的问题。当我使用MaterialApp
=> CupertinoTabScaffold
并使用TextField
时,它会显示像这样的错误 TextField 小部件需要由本地化小部件祖先提供 MaterialLocalizations。材料库使用本地化来生成消息、标签和缩写。。任何人有任何解决方案?谢谢。
【参考方案1】:
不确定 Cupertino 部分,但是(afaik)您需要将您的应用包装在 MaterialApp()
中以访问 Material 小部件和其他方法等。
【讨论】:
【参考方案2】:您需要将根 Widget 包装在 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'),
);
【讨论】:
以上是关于库比蒂诺相当于“材料”的主要内容,如果未能解决你的问题,请参考以下文章