diff --git a/compiler/cpp/src/generate/t_dart_generator.cc b/compiler/cpp/src/generate/t_dart_generator.cc
index bec2e47..7a744cf 100644
--- a/compiler/cpp/src/generate/t_dart_generator.cc
+++ b/compiler/cpp/src/generate/t_dart_generator.cc
@@ -175,6 +175,7 @@
   void generate_dart_bean_boilerplate(std::ofstream& out, t_struct* tstruct);
 
   void generate_function_helpers(t_function* tfunction);
+  std::string init_value(t_field* tfield);
   std::string get_cap_name(std::string name);
   std::string get_member_name(std::string name);
   std::string get_args_class_name(std::string name);
@@ -801,7 +802,7 @@
   for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
     generate_dart_doc(out, *m_iter);
     indent(out) << type_name((*m_iter)->get_type()) + " _"
-                << get_member_name((*m_iter)->get_name()) << ";" << endl;
+                << get_member_name((*m_iter)->get_name()) << init_value(*m_iter) << ";" << endl;
 
     indent(out) << "static const int " << upcase_string((*m_iter)->get_name())
                 << " = " << (*m_iter)->get_key() << ";" << endl;
@@ -2312,6 +2313,49 @@
   throw "INVALID TYPE IN type_to_enum: " + type->get_name();
 }
 
+std::string t_dart_generator::init_value(t_field* field) {
+  // Do not initialize optional fields
+  if (field->get_req() == t_field::T_OPTIONAL) {
+    return "";
+  }
+
+  t_type* ttype = field->get_type();
+
+  // Get the actual type for a typedef
+  if (ttype->is_typedef()) {
+    ttype = ((t_typedef*)ttype)->get_type();
+  }
+
+  // Only consider base types for default initialization
+  if (!ttype->is_base_type()) {
+    return "";
+  }
+  t_base_type::t_base tbase = ((t_base_type*)ttype)->get_base();
+
+  // Initialize bools, ints, and doubles with sane defaults
+  string result;
+  switch (tbase) {
+  case t_base_type::TYPE_BOOL:
+    result = " = false";
+    break;
+  case t_base_type::TYPE_I8:
+  case t_base_type::TYPE_I16:
+  case t_base_type::TYPE_I32:
+  case t_base_type::TYPE_I64:
+    result = " = 0";
+    break;
+  case t_base_type::TYPE_DOUBLE:
+    result = " = 0.0";
+    break;
+  case t_base_type::TYPE_VOID:
+  case t_base_type::TYPE_STRING:
+    result = "";
+    break;
+  }
+
+  return result;
+}
+
 std::string t_dart_generator::get_cap_name(std::string name) {
   name[0] = toupper(name[0]);
   return name;
