小编Gow*_*K K的帖子

Flutter 中 print() 与 debugPrint() 和 log() 之间的实际区别是什么?

我正在尝试创建一个用于日志记录的实用程序。

我需要知道print()vsdebugPrint()和之间的实际区别log()

我看到的许多答案都已经过时或令人困惑。此外,一些赞成的答案是矛盾的。

我正在尝试以红色打印错误消息。我正在使用 ANSI 代码来实现它。

debugPrint("\x1B[31m HelloDebug \x1B[0m");
Run Code Online (Sandbox Code Playgroud)

上面一张用红色打印。

但是当我使用同样的方法时log(),它不会以红色打印。它转义了 ANSI 代码。

我发现的一件事是 log() 有错误参数。如果我将某些内容作为错误传递,它默认处理红色。

在第一个使用 的例子中log,红色不会出现,因为 ANSI 代码被忽略。但在debugPrint使用过程中,效果还不错。在第三个中,默认情况下会出现红色错误。但即使对于空字符串消息也会添加额外的行。

代码: 在此输入图像描述

输出: 在此输入图像描述

是否可以使用ANSI code日志制作彩色文本?因为我有其他 ANSI 代码来制作不同颜色的文本。

我不想使用 debugPrint,因为如果我太频繁地打印某些内容,系统会忽略日志。

经过一段时间的挖掘,我发现日志函数是在 dart 运行时中用 c++ 实现的。因为日志函数是 dart sdk 中的外部函数。

external void log(
  String message, {
  DateTime? time,
  int? sequenceNumber,
  int level = 0,
  String name = '',
  Zone? zone,
  Object? error,
  StackTrace? stackTrace,
});
Run Code Online (Sandbox Code Playgroud)

https://github.com/dart-lang/sdk/blob/main/runtime/lib/developer.cc

我在挖掘时也看到了一些不同的答案。下面的答案说debugPrint仅在小部件类中可用。这仍然是真的吗?

/sf/answers/3656908741/ …

console logging ios dart flutter

13
推荐指数
1
解决办法
2666
查看次数

导致:java.lang.RuntimeException:无法创建类 com.app.MyViewModel 的实例

我遇到了访问视图模型的问题。

我有一个活动和其中的 2 个片段。我有一个活动和片段的视图模型,使用在主机活动中创建的视图模型的相同实例。

class MyViewModel(var paymentDataModel: PaymentDataModel) : ViewModel(){

   fun someMethod():Boolean{
   //return Something 
}
}

class MyViewModelFactory(var paymentDataModel: PaymentDataModel) : ViewModelProvider.Factory {

    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        return MyViewModel(paymentDataModel) as T
    }
}

class NewPaymentAmountFragment : Fragment() {
    private val paymentViewModel: MyViewModel by activityViewModels()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        if(paymentViewModel.someMehtod()){ 
   //Accessing activity viewmodel in fragment
     }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在活动函数中使用 viewModel 扩展定义 viewmodel,则会出现以下错误。

导致:java.lang.RuntimeException:无法创建类 com.app.MyViewModel 的实例

    class MyActivity : BaseActivity(){
    
    val myViewModel: …
Run Code Online (Sandbox Code Playgroud)

android mvvm viewmodel kotlin android-viewmodel

3
推荐指数
1
解决办法
1317
查看次数

标签 统计

android ×1

android-viewmodel ×1

console ×1

dart ×1

flutter ×1

ios ×1

kotlin ×1

logging ×1

mvvm ×1

viewmodel ×1