在我的 flutter 应用程序中,我使用此代码转到我的仪表板页面,但第一次没有这样做,我收到了debugLocked错误消息。
应用程序中的启动页面是一个路由器,它检查共享首选项“sessionid”,如果设置,则将用户直接带到仪表板,否则将他们带到登录。
如果没有下面的代码,我就可以很好地访问我的仪表板,Navigator.pushReplacement()但是随后,appBar 上出现了一个后退箭头。此后退按钮将应用程序带回路由器。
我搜索了有关如何从导航器中删除所有屏幕的答案,以下是我发现的内容。
Navigator.of(context).popUntil(ModalRoute.withName(Dashboard.id));
Run Code Online (Sandbox Code Playgroud)
使用上面的代码给了我debugLocked错误。有没有办法缓解这个问题?或者有没有其他有效的方法可以从上下文中删除屏幕?设置是否automaticallyImplyLeading有false帮助?因为只有在有人登录或注册后才会出现此错误。
我想知道是否有办法检测小部件中发生的溢出并返回一个布尔值以根据trueorfalse值进行一些更改。
例如,我有一个里面有文字的容器。我想检测文本何时溢出容器,之后我将在某些条件下使容器变大。我知道有一些方法,auto_size_text但这里的重点是检测溢出。
我是颤振的新手,并根据要求执行一项任务。
我正在创建一个可以在所有平台上运行的应用程序,如 iOS、Android、桌面(MacOS、Linux、Windows)和网络。
现在客户端想要自定义 MenuBar 并添加一些额外的操作并设置 MenuItem 的分组。
菜单栏如下所示:
有没有可能通过flutter来完成这个任务?
我正在研究 Flutter 响应式 Web UI。我想在移动和桌面屏幕宽度的特定屏幕宽度上关闭打开的抽屉,所以如果我拉伸浏览器,抽屉应该关闭。
比如我打开抽屉(屏幕宽度小于500)
而当屏幕宽度大于 500 时,我希望打开的抽屉自动关闭。
注意:当抽屉打开时。我已经有一个代码来检查是否显示按钮菜单抽屉的屏幕宽度。但基本上,当用户打开抽屉然后突然拉伸浏览器时,抽屉应该关闭。
代码如下。谢谢您的帮助
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size.width;
return Scaffold(
drawer: Drawer(),
body: CustomNavBar(screenSize: size),
);
}
}
class CustomNavBar extends StatefulWidget {
final double screenSize;
const CustomNavBar({Key key, this.screenSize}) : super(key: key);
@override
_CustomNavBarState createState() => _CustomNavBarState();
}
class _CustomNavBarState extends State<CustomNavBar> {
@override
Widget build(BuildContext context) {
if (Scaffold.of(context).isDrawerOpen && widget.screenSize > 500) {
print("Drawer is Opened");
Scaffold.of(context).openEndDrawer(); //animation …Run Code Online (Sandbox Code Playgroud) 我是 Flutter 新手,我正在开发一个电子商务网站,我想在我的欢迎页面中添加一个 Grid 来显示最近的产品,我正在尝试使用 GridVeiw.builder,但出现错误
失败的断言:第 551 行 pos 12:“child.hasSize”:不正确。
我不明白为什么我会看到这个错误。
我的欢迎屏幕
import 'package:ecommerce_practice/components/carousel.dart';
import 'package:ecommerce_practice/components/horizontal_list.dart';
import 'package:ecommerce_practice/components/products.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class WelcomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('E-commerce'),
backgroundColor: Colors.red,
actions: [
IconButton(
icon: Icon(
Icons.search,
),
color: Colors.white,
onPressed: () {},
),
IconButton(
icon: Icon(Icons.shopping_cart),
color: Colors.white,
onPressed: () {},
)
],
),
drawer: Drawer(
child: ListView(
children: [
UserAccountsDrawerHeader(
accountName: Text("Aleem"),
accountEmail: Text('aleem.alam@outlook.com'),
currentAccountPicture: GestureDetector(
child: CircleAvatar( …Run Code Online (Sandbox Code Playgroud) 这些天我正在为 Android 平台开发 Flutter 移动应用程序。我想添加一个带有文本图标/图像的按钮。该图像必须位于按钮文本的右侧。
我已经在这里附上了图片。
这是我的代码。
child: FlatButton.icon(
icon: Image.asset("images/notesicon.png", width: 20.0,height: 20.0,),
label: Text("Add Note",
style: TextStyle(
fontSize: 11.0,
fontFamily: "Raleway"
),
),
textColor: Colors.white,
color: Color(0xFF226597),
shape: OutlineInputBorder(borderSide: BorderSide(
style: BorderStyle.solid,
width: 1.0,
color: Colors.black),
borderRadius: new BorderRadius.circular(20.0)
),
),
Run Code Online (Sandbox Code Playgroud) 有谁知道:我可以完全使用 Flutter 的 Material Widgets 构建 iOS 应用程序吗?或者是否存在任何功能问题?是否有任何有关 Material Widgets 在 iOS 上运行的文档?
(我不是在这里谈论设计/用户体验影响......)
谢谢!
该Center部件在堆叠的中心部件水平和垂直中心。如何仅水平或垂直居中小部件?
使用行或列小部件可以使堆栈中的小部件居中。可以在不使用这些小部件的情况下完成吗?
状况:
中心小部件:
Container(
decoration:
BoxDecoration(border: Border.all(color: Colors.black87, width: 10)),
child: Stack(
children: [
Center(
child: Container(color: Colors.amber, width: 50, height: 50),
),
],
),
);
Run Code Online (Sandbox Code Playgroud)
与行水平居中:
Row(mainAxisAlignment: MainAxisAlignment.center)
垂直居中与列:
Column(mainAxisAlignment: MainAxisAlignment.center)
上面的对齐是想要的结果。使用其他 Flutter 小部件可以实现这些结果吗?
如何自定义Flutter TabBar中的Tab指示器以达到下面的目标结果?
我该如何执行以下操作:
这是我的代码
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
var categoryTabs = <Tab>[...];
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: categoryTabs.length,
child: Scaffold(
appBar: AppBar(
title: Text('My App'),
centerTitle: true,
bottom: PreferredSize(
preferredSize: Size(100, 70),
child: Column(
children: [
TabBar(
indicatorSize: TabBarIndicatorSize.tab,
indicatorColor: Colors.transparent,
labelColor: colorPrimaryDark,
isScrollable: true,
unselectedLabelColor: Colors.white,
indicator: BoxDecoration(
borderRadius: BorderRadius.circular(50),
color: Colors.white,
),
tabs: categoryTabs,
),
SizedBox(height: 10)
],
), …Run Code Online (Sandbox Code Playgroud) 我正在尝试将条纹支付集成到 flutter 移动应用程序中。完成付款后,我希望应用程序执行Navigator.pop(context)。但是,我收到错误消息:
未处理的异常:查找已停用小部件的祖先是不安全的。E/flutter (2773):此时 widget 元素树的状态不再稳定。
这是我的条纹支付代码
class ExistingCardsPage extends StatefulWidget {
static const String id = 'exsiting-card';
ExistingCardsPage({Key key}) : super(key: key);
@override
ExistingCardsPageState createState() => ExistingCardsPageState();
}
class ExistingCardsPageState extends State<ExistingCardsPage> {
List cards = [];
StripeService _service = StripeService();
Future<StripeTransactionResponse> payViaExistingCard(
BuildContext context, card, amount) async {
await EasyLoading.show(status: "Please wait....");
var expiryArr = card['expiryDate'].split('/');
CreditCard stripeCard = CreditCard(
number: card['cardNumber'],
expMonth: int.parse(expiryArr[0]),
expYear: int.parse(expiryArr[1]),
);
var response = await StripeService.payViaExistingCard(
amount: '${amount}00', currency: …Run Code Online (Sandbox Code Playgroud)