Sample code for 30+ languages & platforms
Dart

Firebase PUT - Writing Data

See more Firebase Examples

Demonstrates how to PUT new data to a Firebase JSON database. The data used in this example is at Chilkat Firebase Pigs Database, and is shown here:

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // Demonstrates how to PUT new data to a Firebase JSON database.

  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  // This example assumes a JWT authentication token, if required, has been previously obtained.
  // See Get Firebase Access Token from JSON Service Account Private Key for sample code.

  // Load the previously obtained Firebase access token into a string.
  final fac = CkFileAccess();
  final String accessToken;
  try {
    accessToken = fac.readEntireTextFile('qa_data/tokens/firebaseToken.txt', 'utf-8');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final rest = CkRest();

  // Make the initial connection (without sending a request yet).
  // Once connected, any number of requests may be sent.  It is not necessary to explicitly
  // call Connect before each request.  
  try {
    rest.connect('chilkat.firebaseio.com', 443, true, true);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final authGoogle = CkAuthGoogle();
  authGoogle.accessToken = accessToken;
  rest.setAuthGoogle(authGoogle);

  // Chilkat's sample data (pig-rescue data) is publicly readable at: https://chilkat.firebaseio.com/.json
  // This data is publicly readable, but not writable.  You'll need to 
  // run against your own database..

  // Generate a new push ID.
  final prng = CkPrng();
  final pushId = prng.firebasePushId();

  // We're going to add a new pig with just the name.
  final pigRecord = CkJsonObject();
  pigRecord.appendString('name', 'William');

  final path = CkStringBuilder();
  path.append('/pig-rescue/animal/');
  path.append(pushId);
  path.append('.json');

  // The string content of the last arg passed is  {"name":"William"} 
  final String jsonResponse;
  try {
    jsonResponse = rest.fullRequestString('PUT', path.getAsString(), pigRecord.emit());
  } on ChilkatException catch (e) {
    // Something happened in the communications (either no request was sent, or no response was received.
    // (The Chilkat REST API also has lower-level methods where an app can send the request in one call,
    // and then receive the response in another call.)
    print(e.lastErrorText);
    return;
  }

  // Check the response status code.   A 200 response status indicates success.
  if (rest.responseStatusCode != 200) {
    print(rest.responseStatusText);
    print(jsonResponse);
    print('Failed.');
    return;
  }

  print(jsonResponse);
  print('Success.');

  // Note: In many of the Chilkat examples, you may notice strange ways
  // of doing something that should be simpler and shorter.  For example,
  // building the path (above) could've been written differently,
  // with some simple string concatenation.
  // 
  // The reason is that the Chilkat examples are written in a 
  // proprietary "example code" scripting language,
  // and then automatically generated to each of the different programming
  // languages you see on example-code.com.  The code generation is
  // limited in what it can do.  For example, string concatentation
  // is not yet a feature of the "example code" scripting language (as of May 2016), 
  // and therefore you won't see the use of a programming language's string
  // concatentation operators in any example.  
  // 
}