testing etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
testing etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

print and debugPrint in Flutter

 

test with print and debugPrint

Hello,

When I was looking at the do’s & dont’s posts about Flutter, there was a topic I came across: print and debugPrint. I use the console screen as much as putting breakpoints while writing a program to test with print, to see where I am in stages. However, if I proceed with print, I get the warning “Don’t invoke ‘print’ in production code”. If I write the same line with debugPrint, this warning disappears. So today I wanted to investigate the difference between these two, why one gives a warning and the other doesn’t. Let’s examine both in detail.

What is print?

print is the standard output function of the Dart language. It prints the text specified in the terminal or console.

void main() {
print("This is an example of the print function.");
}

What are the disadvantages?

  • The first disadvantage is that when we want to print long texts or too many lines of output, it can give an “output truncated” error in the console (this has happened to me before, I encountered it when I researched debugPrint). So, we can have problems when printing a lot of data at the same time.
  • The second issue is actually related to the first one. When we want to output a lot of data or a large amount of data, there can be a performance loss. So it is less efficient in terms of performance.

What is debugPrint?

debugPrint is a Flutter framework specific function optimized for Flutter applications. It prints text to the console in the same way, but prevents long text from being split and truncated.

void main() {
debugPrint("This is an example of the debugPrint function.");
}

What are the advantages?

  • The debugPrint function checks the line boundaries of text and splits the output into chunks if necessary. This way, long texts are printed without being properly truncated.
  • This makes debugPrint more performant when printing large data and does not negatively affect the performance of the application.
  • debugPrint limits the output to 800 characters by default. However, we can use debugPrint’s “wrapWidth” parameter for longer output.

wrapWidth Usage

The wrapWidth parameter of the debugPrint function allows us to control how long text is wrapped. Here wrap means to determine after how many characters each line is divided.

String longText = 'This is an example of a very long text.' * 20;  //This means printing the text 20 times in a row.

// debugPrint without wrapWidth (standard)
debugPrint("without wrapWidth:", wrapWidth: 800);
debugPrint(longText);

// usage of debugPrint with wrapWidth parameter (split after the 50th character)
debugPrint("\nwith wrapWidth (50 characters):", wrapWidth: 800);
debugPrint(longText, wrapWidth: 50);
  • Without wrapWidth: debugPrint is used with the default wrap width (800 characters).
  • With wrapWidth (50 Characters): the wrapWidth parameter is set to 50 characters, so that each line is split after 50 characters.

Below we will see the output of these codes: texts will move to a new line after the specified number of characters. This is particularly useful for making long log messages more readable.

without wrapWidth:
This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.This is an example of a very long text.

with wrapWidth:
This is an example of a very long text.This is an
example of a very long text.This is an example of
a very long text.This is an example of a very long
text.This is an example of a very long text.This
is an example of a very long text.This is an
example of a very long text.This is an example of
a very long text.This is an example of a very long
text.This is an example of a very long text.This
is an example of a very long text.This is an
example of a very long text.This is an example of
a very long text.This is an example of a very long
text.This is an example of a very long text.This
is an example of a very long text.This is an
example of a very long text.This is an example of
a very long text.This is an example of a very long
text.This is an example of a very long text.

Which one to use in which situation?

Short and Simple Printouts: For simple and short outputs we can still use print (if we don’t mind the yellow warning).
Long and Complex Output: When you need to print long text or a lot of data, it is wiser to use debugPrint.
General Use: It is still generally more convenient and reliable to use debugPrint when debugging Flutter projects.

As we can see, small changes in the application can make a big difference in performance and usability. After doing my research, I decided to use debugPrint instead of print in all my tests and got rid of the yellow warning. I hope this was useful.

Thank you in advance for your valuable feedback.

Selin.

Flutter’da print ve debugPrint

 

print ve debugPrint ile test

Merhaba,

Flutter ile ilgili do’s & dont’s postlarına bakarken karşılaştığım bir konu vardı: print ve debugPrint. print ile test etmek, aşama aşama nerede olduğumu görmek için program yazarken breakpoint koymak kadar çok kullanıyorum console ekranını. Ancak print ile ilerlersem “Don’t invoke ‘print’ in production code” uyarısı ile karşılaşıyorum. Aynı satırı debugPrint ile yazarsam bu uyarı kayboluyor. O yüzden bugün bu ikisinin farkını, birinde neden uyarı verdiğini, diğerinde vermediğini araştırmak istedim. Şimdi ikisini de detaylıca inceleyelim.

print Nedir?

print Dart dilinin standart çıktı fonksiyonu. Terminalde veya konsolda belirtilen metni yazdırmayı sağlıyor.

void main() {
print("Bu bir print fonksiyonu örneğidir.");
}

Dezavantajı nedir?

  • Birinci dezavantajı uzun metinler veya çok fazla satır çıktısı yazdırmak istediğimizde konsolda “output truncated” (çıktı kesildi) hatası verebiliyor (daha önce başıma geldi, debugPrint ile onu araştırdığımda karşılaşmıştım). Yani, çok fazla veriyi aynı anda yazdırırken problem yaşayabiliyoruz.
  • İkinci konu da aslında birinci ile bağlantılı. Çok sayıda veya büyük veri çıktıları almak istediğimizde performans kaybı oluşabiliyor. Yani performans açısından daha az verimli.

debugPrint Nedir?

debugPrint Flutter uygulamaları için optimize edilmiş, Flutter çerçevesine özel bir fonksiyondur. Aynı şekilde konsola metni yazdırıyor ancak uzun metinlerin bölünmesini ve kesilmesini engelliyor.

void main() {
debugPrint("Bu bir debugPrint fonksiyonu örneğidir.");
}

Avantajı nedir?

  • debugPrint fonksiyonu, metinlerin satır sınırlarını kontrol edip gerektiğinde çıktıyı parçalara bölüyor. Bu sayede, uzun metinler düzgün şekilde kesilmeden yazdırılıyor.
  • Bu sayede büyük verileri yazdırırken debugPrint daha performanslı ve uygulamanın performansını olumsuz etkilememiş oluyor.
  • debugPrint çıktıyı varsayılan olarak 800 karakterle sınırlıyor. Ancak daha uzun çıktılar için debugPrint'in “wrapWidth” parametresini kullanabiliriz.

wrapWidth Kullanımı

debugPrint fonksiyonunun wrapWidth parametresi, uzun metinlerin nasıl sarılacağını (wrap) kontrol etmemizi sağlar. Burada sarmak, her bir satırın kaç karakterden sonra bölüneceğini belirlemek anlamına geliyor.

String longText = 'Bu çok uzun bir metin örneğidir. ' * 20;  //Bu metni arka
//arkaya 20 kez yazdırmak demek.

// wrapWidth olmadan debugPrint kullanımı (standart olan)
debugPrint("wrapWidth olmadan:", wrapWidth: 800);
debugPrint(longText);

// wrapWidth parametresi ile debugPrint kullanımı (50. karakterden sonra bölünmesi))
debugPrint("\nwrapWidth ile (50 karakter):", wrapWidth: 800);
debugPrint(longText, wrapWidth: 50);
  • wrapWidth OlmadandebugPrint varsayılan sarma genişliğiyle (800 karakter) kullanılır.
  • wrapWidth ile (50 Karakter)wrapWidth parametresi 50 karakter olarak ayarlanır, böylece her satır 50 karakterden sonra bölünür.

Aşağıda bu kodların çıktısını göreceğiz: metinler belirlenen karakter sayısından sonra yeni satıra geçiyor olacak. Bu, uzun log mesajlarını daha okunabilir hale getirmek için özellikle yararlı bir kullanım.

wrapWidth olmadan:
Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir. Bu çok uzun bir metin örneğidir.

wrapWidth ile (50 karakter):
Bu çok uzun bir metin örneğidir.Bu çok uzun bir
metin örneğidir.Bu çok uzun bir metin örneğidir.Bu
çok uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.Bu çok uzun bir metin örneğidir.Bu çok
uzun bir metin örneğidir.Bu çok uzun bir metin
örneğidir.

Hangi Durumda Hangisi Kullanılmalı?

  • Kısa ve Basit Çıktılar: Basit ve kısa çıktılar için print’i halen kullanabiliriz (sarı uyarıdan rahatsız olmuyorsak).
  • Uzun ve Karmaşık Çıktılar: Uzun metinler veya çok fazla veri yazdırmak gerektiğinde debugPrint’i tercih edilmek daha akıllıca olur.
  • Genel Kullanım: Yine de Flutter projelerinde hata ayıklama yaparken genellikle debugPrint kullanmak daha uygun ve güvenilir.

Gördüğümüz gibi uygulamada yapacağımız ufak değişiklikler performansta ve kullanımda büyük farklar yaratabiliyor. Ben araştırmamı yaptıktan sonra artık tüm testlerimde print yerine debugPrint kullanmaya karar verdim, sarı uyarıdan da kurtuldum. Umarım faydalı olmuştur.

Teşekkürler.

Selin.