在 Android Studio 中使用 Flutter 进行调试时如何“设置值...”

Posted

技术标签:

【中文标题】在 Android Studio 中使用 Flutter 进行调试时如何“设置值...”【英文标题】:How to "Set Value..." when debugging with Flutter in Android Studio 【发布时间】:2019-01-31 16:06:42 【问题描述】:

问题

以下图片和代码是使用“New Flutter Project”创建Flutter App时的默认设置。

  import 'package:flutter/material.dart';

  void main() => runApp(new MyApp());

  class MyApp extends StatelessWidget 

    @override
    Widget build(BuildContext context) 
      return new MaterialApp(
        title: 'Flutter Demo',
        theme: new ThemeData(

          primarySwatch: Colors.blue,
        ),
        home: new MyHomePage(title: 'Flutter Demo Home Page'),
      );
    
  

  class MyHomePage extends StatefulWidget 
    MyHomePage(Key key, this.title) : super(key: key);

    final String title;

    @override
    _MyHomePageState createState() => new _MyHomePageState();
  

  class _MyHomePageState extends State<MyHomePage> 
    int _counter = 0;

    void _incrementCounter() 
      setState(() 

        _counter++; // <- I set a breakpoint

      );
    

    @override
    Widget build(BuildContext context) 

      return new Scaffold(
        appBar: new AppBar(

          title: new Text(widget.title),
        ),
        body: new Center(

          child: new Column(

            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              new Text(
                'You have pushed the button this many times:',
              ),
              new Text(
                '$_counter',
                style: Theme.of(context).textTheme.display1,
              ),
            ],
          ),
        ),
        floatingActionButton: new FloatingActionButton(
          onPressed: _incrementCounter,
          tooltip: 'Increment',
          child: new Icon(Icons.add),
        ), // This trailing comma makes auto-formatting nicer for build methods.
      );
    
  

我试图通过在代码中放置一个断点来“设置值...”,当使用此代码进行调试时,_counter 会递增,但即使我将光标悬停也无法按下。

① 《调试'main.dart'(^D)》 ② 断点 ③ “设定值……”

问题

开发环境

android Studio 3.1.4 颤振 0.5.1 飞镖 2 为 x86 构建的 Android SDK

最好的问候,

【问题讨论】:

你解决了吗? 我无法解决这个问题。 【参考方案1】:

当执行在断点处停止时,setState 不起作用。 setState 不会直接导致重新渲染,它只是将小部件标记为需要重新渲染。

下次同步信号来自显示器时,Flutter 会重建视图的陈旧部分。

【讨论】:

这种情况下应该在哪里下断点,哪个变量可以是“Set Value ...”? 你可以调用setValue,你更新什么变量并不重要,但是你需要继续执行才能看到setValue的效果 我无法按下“设置值...”按钮。 @GünterZöchbauer 有什么方法可以在调试器中编写array [0]array[1] 或任何运行时分配? 这不是对“如何...?”的回答。我们仍然无法在运行时更改变量。问题中描述的情况是具体的。我想在渲染前更改blocrepository 中的var,甚至是小部件中的var,但我不能。

以上是关于在 Android Studio 中使用 Flutter 进行调试时如何“设置值...”的主要内容,如果未能解决你的问题,请参考以下文章

如何在android studio中更新maven依赖

如何在模块(Android Studio)中使用 com.android.databinding?

怎样在Android Studio中使用Uiautomator

在 android studio 中使用设备调试时,Android Logcat 为空

在Android Studio中使用lambda表达式

在android项目和库中使用支持库(Android Studio)