标签: flutter-widget

失败的断言:!_debugLocked 在 Flutter 中使用 Navigator.popUntil() 时不为真

在我的 flutter 应用程序中,我使用此代码转到我的仪表板页面,但第一次没有这样做,我收到了debugLocked错误消息。

应用程序中的启动页面是一个路由器,它检查共享首选项“sessionid”,如果设置,则将用户直接带到仪表板,否则将他们带到登录。

如果没有下面的代码,我就可以很好地访问我的仪表板,Navigator.pushReplacement()但是随后,appBar 上出现了一个后退箭头。此后退按钮将应用程序带回路由器。

我搜索了有关如何从导航器中删除所有屏幕的答案,以下是我发现的内容。

Navigator.of(context).popUntil(ModalRoute.withName(Dashboard.id));
Run Code Online (Sandbox Code Playgroud)

使用上面的代码给了我debugLocked错误。有没有办法缓解这个问题?或者有没有其他有效的方法可以从上下文中删除屏幕?设置是否automaticallyImplyLeadingfalse帮助?因为只有在有人登录或注册后才会出现此错误。

navigation dart flutter flutter-widget

5
推荐指数
1
解决办法
8584
查看次数

如何检测小部件中的溢出

我想知道是否有办法检测小部件中发生的溢出并返回一个布尔值以根据trueorfalse值进行一些更改。

例如,我有一个里面有文字的容器。我想检测文本何时溢出容器,之后我将在某些条件下使容器变大。我知道有一些方法,auto_size_text但这里的重点是检测溢出

flutter flutter-layout flutter-widget

5
推荐指数
2
解决办法
1884
查看次数

如何在flutter桌面中自定义AppMenu(MenuBar)?

我是颤振的新手,并根据要求执行一项任务。

我正在创建一个可以在所有平台上运行的应用程序,如 iOS、Android、桌面(MacOS、Linux、Windows)和网络。

现在客户端想要自定义 MenuBar 并添加一些额外的操作并设置 MenuItem 的分组。

菜单栏如下所示:

在此处输入图片说明

有没有可能通过flutter来完成这个任务?

flutter flutter-layout flutter-desktop flutter-widget

5
推荐指数
2
解决办法
1679
查看次数

Flutter web - 如何监听打开的抽屉状态并关闭它

我正在研究 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 flutter-layout flutter-web flutter-widget

5
推荐指数
2
解决办法
694
查看次数

失败的断言:第 551 行 pos 12:“child.hasSize”:不正确

我是 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)

dart flutter flutter-layout flutter-widget

5
推荐指数
1
解决办法
8845
查看次数

如何为按钮右侧添加图像/图标?

这些天我正在为 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 flutter-layout flutter-widget

4
推荐指数
3
解决办法
8692
查看次数

Flutter:哪些 Material Widget 可在 iOS 上运行?

有谁知道:我可以完全使用 Flutter 的 Material Widgets 构建 iOS 应用程序吗?或者是否存在任何功能问题?是否有任何有关 Material Widgets 在 iOS 上运行的文档?

(我不是在这里谈论设计/用户体验影响......)

谢谢!

flutter flutter-widget flutter-ios

4
推荐指数
1
解决办法
3613
查看次数

如何垂直或水平居中堆栈中的小部件?

Center部件在堆叠的中心部件水平和垂直中心。如何仅水平或垂直居中小部件?

使用行或列小部件可以使堆栈中的小部件居中。可以在不使用这些小部件的情况下完成吗?

状况:

  • 不能使用行/列。
  • Stack 的大小在布局之前是未知的(不能使用硬编码的 Positioned 值)。

中心小部件:

堆栈中的居中小部件

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 flutter-layout flutter-widget

4
推荐指数
1
解决办法
1346
查看次数

Flutter 自定义 TabBar 指示器

如何自定义Flutter TabBar中的Tab指示器以达到下面的目标结果?

当前状态 当前选项卡栏状态

目标 目标 TabBar 结果

我该如何执行以下操作:

  1. 更改未选定的选项卡,如目标图片所示
  2. 调整波纹边框以适合内容并具有圆形边缘。

这是我的代码

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)

dart flutter flutter-layout flutter-widget

4
推荐指数
2
解决办法
1万
查看次数

未处理的异常:查找已停用小部件的祖先是不安全的。怎么解决这个问题?

我正在尝试将条纹支付集成到 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)

stripe-payments flutter flutter-widget

4
推荐指数
1
解决办法
9519
查看次数