Skip to main content

post-30-04-2024-1

Dạo gần đây mình có làm 1 ứng dụng liên quan đến Học tiếng anh cho em bé và đang muốn xử dụng 1 dạng database mà không cần cấu hình quá nhiều

vì không có nhiều thời gian để dựng BE và quản lý nên đang phân vân có nên dùng Firebase không thì lại search thấy có 1 thằng là SupperBase cũng khá ngon và dễ sử dụng nên có làm thửSau đây là 1 vài note khi sử dụng Database này với Flutter

Đăng ký ứng dụng với SuppeBase

await Supabase.initialize(
   url: 'https://ytsepqcuprymwkcpobpr.supabase.co',
   anonKey:`'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl0c2VwcWN1cHJ5bXdrY3BvYnByIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTY2NDg3MDMsImV4cCI6MjAzMjIyNDcwM30.DWWiOGNNUOE2ErPmCrZSXgYjwuK1ttsfDkMzwPni1js',`
);

Có 2 chế độ bình thường và real time khi tạo table

Chế độ bình thường (FutureBuilder)

final _future = Supabase.instance.client.from('todos').select('*') // Khai báo ở đầu hàm 
FutureBuilder(  
    future: _future,
    builder: (context, snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        return progress();
      } else {
        if (snapshot.hasError) {
          return Center(
            child: Text("Error: ${snapshot.error}"),
          );
        } else {
          return Container(
            child: Text("Data: ${snapshot.data}"),
          );
        }
      }
})

Chế độ realtime (StreamBuilder)

final _future = Supabase.instance.client.from('todos').stream(primaryKey: ['id']);
Container(
  width: 300,
  height: 200,
  child: StreamBuilder<List<Map<String, dynamic>>>(
      stream: _futu re,
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
          return progress();
        } else {
          final todos = snapshot.data!;
          return ListView.builder(
            itemCount: todos.length,
            itemBuilder: ((context, index) {
              final todo = todos[index];
              return ListTile(
                title: Text(todo['name']),
              );
            }),
          );
        }
      }),
  )

FutureBuilder => Để gọi 1 function trả về theo kiểu aysn/await trong flutter

StreamBuilder => Để gọi 1 function là stream bên trong flutter, thường sử dụng cho các flow realtime